bug TDI-24587 fixed: tXMLMap reaches 10K Windows Handle Limit
git-svn-id: http://talendforge.org/svn/tos/branches/branch-5_2@97480 f6f1c999-d317-4740-80b0-e6d1abc6f99e
This commit is contained in:
@@ -10,7 +10,6 @@ import org.talend.designer.xmlmap.model.emf.xmlmap.AbstractNode;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.Connection;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.NodeType;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.OutputTreeNode;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.OutputXmlTree;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.VarNode;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.VarTable;
|
||||
@@ -126,7 +125,6 @@ public class CreateDocChildrenCommand extends Command {
|
||||
}
|
||||
}
|
||||
}
|
||||
manager.refreshOutputTreeSchemaEditor((OutputXmlTree) XmlMapUtil.getAbstractInOutTree(targetOutputNode));
|
||||
}
|
||||
|
||||
private void createConnection(AbstractNode sourceNode, AbstractNode targetNode) {
|
||||
|
||||
@@ -75,13 +75,16 @@ public class XmlDropTargetListener extends AbstractTransferDropTargetListener {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dragEnter(DropTargetEvent event) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dragLeave(DropTargetEvent event) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dragOperationChanged(DropTargetEvent event) {
|
||||
|
||||
}
|
||||
@@ -226,6 +229,7 @@ public class XmlDropTargetListener extends AbstractTransferDropTargetListener {
|
||||
showTargetFeedback();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drop(DropTargetEvent event) {
|
||||
setCurrentEvent(event);
|
||||
eraseTargetFeedback();
|
||||
@@ -314,24 +318,27 @@ public class XmlDropTargetListener extends AbstractTransferDropTargetListener {
|
||||
|
||||
if (getTargetEditPart() != null) {
|
||||
Command command = getCommand();
|
||||
if (command != null && command.canExecute())
|
||||
if (command != null && command.canExecute()) {
|
||||
getViewer().getEditDomain().getCommandStack().execute(command);
|
||||
else
|
||||
} else {
|
||||
getCurrentEvent().detail = DND.DROP_NONE;
|
||||
} else
|
||||
}
|
||||
} else {
|
||||
getCurrentEvent().detail = DND.DROP_NONE;
|
||||
}
|
||||
|
||||
selectAddedObject();
|
||||
}
|
||||
|
||||
private void selectAddedObject() {
|
||||
boolean added = false;
|
||||
List newObjects = getCreateRequest().getNewObjects();
|
||||
for (int i = 0; i < newObjects.size(); i++) {
|
||||
Object model = newObjects.get(i);
|
||||
EditPartViewer viewer = getViewer();
|
||||
viewer.getControl().forceFocus();
|
||||
Object editpart = viewer.getEditPartRegistry().get(model);
|
||||
boolean added = false;
|
||||
|
||||
if (editpart instanceof EditPart) {
|
||||
if (!added) {
|
||||
// Force a layout first.
|
||||
|
||||
@@ -68,6 +68,7 @@ public class XmlMapEditor extends GraphicalEditor {
|
||||
this.mapperManager = mapperManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createGraphicalViewer(final Composite parent) {
|
||||
// rulerComp = new RulerComposite(parent, SWT.BORDER);
|
||||
XmlMapGraphicViewer viewer = new XmlMapGraphicViewer();
|
||||
@@ -84,6 +85,7 @@ public class XmlMapEditor extends GraphicalEditor {
|
||||
/**
|
||||
* @see org.eclipse.gef.commands.CommandStackListener#commandStackChanged(java.util.EventObject)
|
||||
*/
|
||||
@Override
|
||||
public void commandStackChanged(EventObject event) {
|
||||
firePropertyChange(IEditorPart.PROP_DIRTY);
|
||||
super.commandStackChanged(event);
|
||||
@@ -92,6 +94,7 @@ public class XmlMapEditor extends GraphicalEditor {
|
||||
/**
|
||||
* @see org.eclipse.gef.ui.parts.GraphicalEditor#createActions()
|
||||
*/
|
||||
@Override
|
||||
protected void createActions() {
|
||||
|
||||
ImportTreeFromXml importAction = new ImportTreeFromXml(this, getGraphicalViewer().getControl().getShell());
|
||||
@@ -99,12 +102,12 @@ public class XmlMapEditor extends GraphicalEditor {
|
||||
getActionRegistry().registerAction(importAction);
|
||||
getSelectionActions().add(importAction.getId());
|
||||
|
||||
CreateAttributeAction createAttribute = new CreateAttributeAction(this);
|
||||
CreateAttributeAction createAttribute = new CreateAttributeAction(this, getGraphicalViewer());
|
||||
createAttribute.setMapperManager(mapperManager);
|
||||
getActionRegistry().registerAction(createAttribute);
|
||||
getSelectionActions().add(createAttribute.getId());
|
||||
|
||||
CreateElementAction createElement = new CreateElementAction(this);
|
||||
CreateElementAction createElement = new CreateElementAction(this, getGraphicalViewer());
|
||||
createElement.setMapperManager(mapperManager);
|
||||
getActionRegistry().registerAction(createElement);
|
||||
getSelectionActions().add(createElement.getId());
|
||||
@@ -129,7 +132,7 @@ public class XmlMapEditor extends GraphicalEditor {
|
||||
getActionRegistry().registerAction(importFromRepository);
|
||||
getSelectionActions().add(importFromRepository.getId());
|
||||
|
||||
CreateNameSpaceAction createNameSpaceInput = new CreateNameSpaceAction(this);
|
||||
CreateNameSpaceAction createNameSpaceInput = new CreateNameSpaceAction(this, getGraphicalViewer());
|
||||
createNameSpaceInput.setMapperManager(mapperManager);
|
||||
getActionRegistry().registerAction(createNameSpaceInput);
|
||||
getSelectionActions().add(createNameSpaceInput.getId());
|
||||
@@ -168,6 +171,7 @@ public class XmlMapEditor extends GraphicalEditor {
|
||||
/**
|
||||
* @see org.eclipse.gef.ui.parts.GraphicalEditor#configureGraphicalViewer()
|
||||
*/
|
||||
@Override
|
||||
protected void configureGraphicalViewer() {
|
||||
super.configureGraphicalViewer();
|
||||
getGraphicalViewer().setRootEditPart(new XmlMapScalableRootEditPart());
|
||||
@@ -179,6 +183,7 @@ public class XmlMapEditor extends GraphicalEditor {
|
||||
/**
|
||||
* @see org.eclipse.gef.ui.parts.GraphicalEditor#initializeGraphicalViewer()
|
||||
*/
|
||||
@Override
|
||||
protected void initializeGraphicalViewer() {
|
||||
|
||||
// getGraphicalViewer().setContents(getContents());
|
||||
@@ -187,8 +192,6 @@ public class XmlMapEditor extends GraphicalEditor {
|
||||
|
||||
getGraphicalViewer().addDropTargetListener(new XmlDropTargetListener(getGraphicalViewer()));
|
||||
|
||||
getGraphicalViewer().addSelectionChangedListener(mapperManager);
|
||||
|
||||
getGraphicalViewer().setContextMenu(new MenueProvider(getGraphicalViewer()));
|
||||
initializeActionRegistry();
|
||||
}
|
||||
|
||||
@@ -50,6 +50,7 @@ public class XmlMapGraphicViewer extends GraphicalViewerImpl {
|
||||
super(coll);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean accept(IFigure figure) {
|
||||
EditPart editpart = null;
|
||||
while (editpart == null && figure != null) {
|
||||
@@ -62,6 +63,7 @@ public class XmlMapGraphicViewer extends GraphicalViewerImpl {
|
||||
return getLightweightSystem().getRootFigure().findFigureAt(x, y, new ConditionalTreeSearch(exclude));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void select(EditPart editpart) {
|
||||
if (editpart instanceof VarTableEditPart) {
|
||||
return;
|
||||
@@ -74,8 +76,9 @@ public class XmlMapGraphicViewer extends GraphicalViewerImpl {
|
||||
// set false to dispatch mouse release event ??? need or not mouseListeners is executed before selection change
|
||||
// setRouteEventsToEditDomain(false);
|
||||
|
||||
if ((getSelectedEditParts().size() == 1) && (getSelectedEditParts().get(0) == editpart))
|
||||
if ((getSelectedEditParts().size() == 1) && (getSelectedEditParts().get(0) == editpart)) {
|
||||
return;
|
||||
}
|
||||
|
||||
primDeselectAll(editpart);
|
||||
appendSelection(editpart); // fireSelectionChanged() is called here
|
||||
@@ -122,6 +125,10 @@ public class XmlMapGraphicViewer extends GraphicalViewerImpl {
|
||||
|
||||
public void setMapperManager(MapperManager mapperManager) {
|
||||
this.mapperManager = mapperManager;
|
||||
if (!selectionListeners.contains(mapperManager)) {
|
||||
mapperManager.setGraphicalViewer(this);
|
||||
addSelectionChangedListener(mapperManager);
|
||||
}
|
||||
}
|
||||
|
||||
public FiguresManager getFiguresManager() {
|
||||
|
||||
@@ -15,14 +15,13 @@ package org.talend.designer.xmlmap.editor.actions;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.emf.common.util.EList;
|
||||
import org.eclipse.gef.GraphicalViewer;
|
||||
import org.eclipse.gef.ui.actions.SelectionAction;
|
||||
import org.eclipse.jface.dialogs.InputDialog;
|
||||
import org.eclipse.jface.viewers.StructuredSelection;
|
||||
import org.eclipse.jface.window.Window;
|
||||
import org.eclipse.ui.IWorkbenchPart;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.InputXmlTree;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.NodeType;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.OutputXmlTree;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.XmlmapFactory;
|
||||
import org.talend.designer.xmlmap.parts.TreeNodeEditPart;
|
||||
@@ -43,8 +42,11 @@ public class CreateAttributeAction extends SelectionAction {
|
||||
|
||||
public static final String ID = "org.talend.designer.xmlmap.editor.actions.CreateAttributeAction";
|
||||
|
||||
public CreateAttributeAction(IWorkbenchPart part) {
|
||||
private GraphicalViewer graphicViewer;
|
||||
|
||||
public CreateAttributeAction(IWorkbenchPart part, GraphicalViewer graphicViewer) {
|
||||
super(part);
|
||||
this.graphicViewer = graphicViewer;
|
||||
setId(ID);
|
||||
setText("Create Attribute");
|
||||
}
|
||||
@@ -121,17 +123,20 @@ public class CreateAttributeAction extends SelectionAction {
|
||||
}
|
||||
|
||||
if (open == Window.OK && mapperManager != null) {
|
||||
TreeNode docRoot = XmlMapUtil.getTreeNodeRoot(parent);
|
||||
if (input) {
|
||||
if (docRoot != null && docRoot.eContainer() instanceof InputXmlTree) {
|
||||
mapperManager.refreshInputTreeSchemaEditor((InputXmlTree) docRoot.eContainer());
|
||||
}
|
||||
} else {
|
||||
if (docRoot != null && docRoot.eContainer() instanceof OutputXmlTree) {
|
||||
mapperManager.refreshOutputTreeSchemaEditor((OutputXmlTree) docRoot.eContainer());
|
||||
}
|
||||
// TreeNode docRoot = XmlMapUtil.getTreeNodeRoot(parent);
|
||||
// if (input) {
|
||||
// if (docRoot != null && docRoot.eContainer() instanceof InputXmlTree) {
|
||||
// mapperManager.refreshInputTreeSchemaEditor((InputXmlTree) docRoot.eContainer());
|
||||
// }
|
||||
// } else {
|
||||
// if (docRoot != null && docRoot.eContainer() instanceof OutputXmlTree) {
|
||||
// mapperManager.refreshOutputTreeSchemaEditor((OutputXmlTree) docRoot.eContainer());
|
||||
// }
|
||||
// }
|
||||
Object object = graphicViewer.getEditPartRegistry().get(treeNode);
|
||||
if (object instanceof TreeNodeEditPart) {
|
||||
graphicViewer.select((TreeNodeEditPart) object);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ package org.talend.designer.xmlmap.editor.actions;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.emf.common.util.EList;
|
||||
import org.eclipse.gef.GraphicalViewer;
|
||||
import org.eclipse.gef.ui.actions.SelectionAction;
|
||||
import org.eclipse.jface.dialogs.InputDialog;
|
||||
import org.eclipse.jface.dialogs.MessageDialog;
|
||||
@@ -22,10 +23,8 @@ import org.eclipse.jface.viewers.StructuredSelection;
|
||||
import org.eclipse.jface.window.Window;
|
||||
import org.eclipse.ui.IWorkbenchPart;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.Connection;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.InputXmlTree;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.NodeType;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.OutputTreeNode;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.OutputXmlTree;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.XmlmapFactory;
|
||||
import org.talend.designer.xmlmap.parts.TreeNodeEditPart;
|
||||
@@ -46,8 +45,11 @@ public class CreateElementAction extends SelectionAction {
|
||||
|
||||
public static final String ID = "org.talend.designer.xmlmap.editor.actions.CreateElementAction";
|
||||
|
||||
public CreateElementAction(IWorkbenchPart part) {
|
||||
private GraphicalViewer graphicViewer;
|
||||
|
||||
public CreateElementAction(IWorkbenchPart part, GraphicalViewer graphicViewer) {
|
||||
super(part);
|
||||
this.graphicViewer = graphicViewer;
|
||||
setId(ID);
|
||||
setText("Create Sub-Element");
|
||||
}
|
||||
@@ -138,15 +140,19 @@ public class CreateElementAction extends SelectionAction {
|
||||
}
|
||||
|
||||
if (open == Window.OK && mapperManager != null) {
|
||||
TreeNode docRoot = XmlMapUtil.getTreeNodeRoot(parent);
|
||||
if (input) {
|
||||
if (docRoot != null && docRoot.eContainer() instanceof InputXmlTree) {
|
||||
mapperManager.refreshInputTreeSchemaEditor((InputXmlTree) docRoot.eContainer());
|
||||
}
|
||||
} else {
|
||||
if (docRoot != null && docRoot.eContainer() instanceof OutputXmlTree) {
|
||||
mapperManager.refreshOutputTreeSchemaEditor((OutputXmlTree) docRoot.eContainer());
|
||||
}
|
||||
// TreeNode docRoot = XmlMapUtil.getTreeNodeRoot(parent);
|
||||
// if (input) {
|
||||
// if (docRoot != null && docRoot.eContainer() instanceof InputXmlTree) {
|
||||
// mapperManager.refreshInputTreeSchemaEditor((InputXmlTree) docRoot.eContainer());
|
||||
// }
|
||||
// } else {
|
||||
// if (docRoot != null && docRoot.eContainer() instanceof OutputXmlTree) {
|
||||
// mapperManager.refreshOutputTreeSchemaEditor((OutputXmlTree) docRoot.eContainer());
|
||||
// }
|
||||
// }
|
||||
Object object = graphicViewer.getEditPartRegistry().get(treeNode);
|
||||
if (object instanceof TreeNodeEditPart) {
|
||||
graphicViewer.select((TreeNodeEditPart) object);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,12 +15,11 @@ package org.talend.designer.xmlmap.editor.actions;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.emf.common.util.EList;
|
||||
import org.eclipse.gef.GraphicalViewer;
|
||||
import org.eclipse.gef.ui.actions.SelectionAction;
|
||||
import org.eclipse.jface.viewers.StructuredSelection;
|
||||
import org.eclipse.ui.IWorkbenchPart;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.InputXmlTree;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.NodeType;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.OutputXmlTree;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.XmlmapFactory;
|
||||
import org.talend.designer.xmlmap.parts.TreeNodeEditPart;
|
||||
@@ -41,8 +40,11 @@ public class CreateNameSpaceAction extends SelectionAction {
|
||||
|
||||
public static final String ID = "org.talend.designer.xmlmap.editor.actions.CreateNameSapceInput";
|
||||
|
||||
public CreateNameSpaceAction(IWorkbenchPart part) {
|
||||
private GraphicalViewer graphicViewer;
|
||||
|
||||
public CreateNameSpaceAction(IWorkbenchPart part, GraphicalViewer graphicViewer) {
|
||||
super(part);
|
||||
this.graphicViewer = graphicViewer;
|
||||
setText("Set A Namespace");
|
||||
setId(ID);
|
||||
}
|
||||
@@ -109,11 +111,15 @@ public class CreateNameSpaceAction extends SelectionAction {
|
||||
|
||||
// children.add(createdNode);
|
||||
|
||||
TreeNode docRoot = XmlMapUtil.getTreeNodeRoot(parent);
|
||||
if (docRoot != null && docRoot.eContainer() instanceof OutputXmlTree) {
|
||||
mapperManager.refreshOutputTreeSchemaEditor((OutputXmlTree) docRoot.eContainer());
|
||||
} else if (docRoot != null && docRoot.eContainer() instanceof InputXmlTree) {
|
||||
mapperManager.refreshInputTreeSchemaEditor((InputXmlTree) docRoot.eContainer());
|
||||
// TreeNode docRoot = XmlMapUtil.getTreeNodeRoot(parent);
|
||||
// if (docRoot != null && docRoot.eContainer() instanceof OutputXmlTree) {
|
||||
// mapperManager.refreshOutputTreeSchemaEditor((OutputXmlTree) docRoot.eContainer());
|
||||
// } else if (docRoot != null && docRoot.eContainer() instanceof InputXmlTree) {
|
||||
// mapperManager.refreshInputTreeSchemaEditor((InputXmlTree) docRoot.eContainer());
|
||||
// }
|
||||
Object object = graphicViewer.getEditPartRegistry().get(createdNode);
|
||||
if (object instanceof TreeNodeEditPart) {
|
||||
graphicViewer.select((TreeNodeEditPart) object);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,9 +20,7 @@ import org.eclipse.gef.ui.actions.SelectionAction;
|
||||
import org.eclipse.jface.viewers.StructuredSelection;
|
||||
import org.eclipse.ui.IWorkbenchPart;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.AbstractInOutTree;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.InputXmlTree;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.OutputTreeNode;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.OutputXmlTree;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode;
|
||||
import org.talend.designer.xmlmap.parts.TreeNodeEditPart;
|
||||
import org.talend.designer.xmlmap.ui.tabs.MapperManager;
|
||||
@@ -138,16 +136,16 @@ public class DeleteTreeNodeAction extends SelectionAction {
|
||||
}
|
||||
|
||||
if (mapperManager != null) {
|
||||
if (input) {
|
||||
if (docRoot != null && docRoot.eContainer() instanceof InputXmlTree) {
|
||||
mapperManager.refreshInputTreeSchemaEditor((InputXmlTree) docRoot.eContainer());
|
||||
}
|
||||
} else {
|
||||
if (docRoot != null && docRoot.eContainer() instanceof OutputXmlTree) {
|
||||
mapperManager.refreshOutputTreeSchemaEditor((OutputXmlTree) docRoot.eContainer());
|
||||
}
|
||||
}
|
||||
|
||||
// if (input) {
|
||||
// if (docRoot != null && docRoot.eContainer() instanceof InputXmlTree) {
|
||||
// mapperManager.refreshInputTreeSchemaEditor((InputXmlTree) docRoot.eContainer());
|
||||
// }
|
||||
// } else {
|
||||
// if (docRoot != null && docRoot.eContainer() instanceof OutputXmlTree) {
|
||||
// mapperManager.refreshOutputTreeSchemaEditor((OutputXmlTree) docRoot.eContainer());
|
||||
// }
|
||||
// }
|
||||
mapperManager.beanListModified(input);
|
||||
if (docRoot != null && docRoot.eContainer() instanceof AbstractInOutTree) {
|
||||
mapperManager.getProblemsAnalyser().checkProblems((AbstractInOutTree) docRoot.eContainer());
|
||||
mapperManager.getMapperUI().updateStatusBar();
|
||||
|
||||
@@ -186,10 +186,12 @@ public class ImportTreeFromRepository extends SelectionAction {
|
||||
AbstractInOutTree tree = null;
|
||||
if (schemaNode.eContainer() instanceof InputXmlTree) {
|
||||
XmlMapConnectionBuilder.rebuildLinks(schemaNode, mapperManager.getCopyOfMapData());
|
||||
mapperManager.refreshInputTreeSchemaEditor((InputXmlTree) schemaNode.eContainer());
|
||||
mapperManager.refreshTreeSchemaEditor((InputXmlTree) schemaNode.eContainer());
|
||||
// mapperManager.refreshInputTreeSchemaEditor((InputXmlTree) schemaNode.eContainer());
|
||||
tree = (InputXmlTree) schemaNode.eContainer();
|
||||
} else if (schemaNode.eContainer() instanceof OutputXmlTree) {
|
||||
mapperManager.refreshOutputTreeSchemaEditor((OutputXmlTree) schemaNode.eContainer());
|
||||
// mapperManager.refreshOutputTreeSchemaEditor((OutputXmlTree) schemaNode.eContainer());
|
||||
mapperManager.refreshTreeSchemaEditor((OutputXmlTree) schemaNode.eContainer());
|
||||
tree = (OutputXmlTree) schemaNode.eContainer();
|
||||
}
|
||||
if (tree != null) {
|
||||
@@ -681,7 +683,7 @@ public class ImportTreeFromRepository extends SelectionAction {
|
||||
if (targetAbsolutePath == null) {
|
||||
targetAbsolutePath = new ArrayList<String>();
|
||||
targetAbsolutePath.add(absoluteXPathQuery);
|
||||
Pattern regex = Pattern.compile(RELATIVE_PATH_PATTERN, Pattern.CANON_EQ | Pattern.CASE_INSENSITIVE //$NON-NLS-1$
|
||||
Pattern regex = Pattern.compile(RELATIVE_PATH_PATTERN, Pattern.CANON_EQ | Pattern.CASE_INSENSITIVE
|
||||
| Pattern.MULTILINE);
|
||||
for (Object obj : schemaTargets) {
|
||||
String relativeXPathQuery = "";
|
||||
@@ -777,7 +779,7 @@ public class ImportTreeFromRepository extends SelectionAction {
|
||||
}
|
||||
|
||||
private File getTempTemplateXSDFile() {
|
||||
IPath tempPath = new Path(System.getProperty("user.dir")).append("temp"); //$NON-NLS-1$ //$NON-NLS-1$ //$NON-NLS-2$
|
||||
IPath tempPath = new Path(System.getProperty("user.dir")).append("temp"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
File tempFile = tempPath.toFile();
|
||||
if (!tempFile.exists()) {
|
||||
tempFile.mkdirs();
|
||||
|
||||
@@ -119,9 +119,11 @@ public class ImportTreeFromXml extends SelectionAction {
|
||||
|
||||
if (parentNode.eContainer() instanceof InputXmlTree) {
|
||||
XmlMapConnectionBuilder.rebuildLinks(parentNode, mapperManager.getCopyOfMapData());
|
||||
mapperManager.refreshInputTreeSchemaEditor((InputXmlTree) parentNode.eContainer());
|
||||
mapperManager.refreshTreeSchemaEditor((InputXmlTree) parentNode.eContainer());
|
||||
// mapperManager.refreshInputTreeSchemaEditor((InputXmlTree) parentNode.eContainer());
|
||||
} else if (parentNode.eContainer() instanceof OutputXmlTree) {
|
||||
mapperManager.refreshOutputTreeSchemaEditor((OutputXmlTree) parentNode.eContainer());
|
||||
// mapperManager.refreshOutputTreeSchemaEditor((OutputXmlTree) parentNode.eContainer());
|
||||
mapperManager.refreshTreeSchemaEditor((OutputXmlTree) parentNode.eContainer());
|
||||
}
|
||||
if (treeNodeRoot != null && treeNodeRoot.eContainer() instanceof AbstractInOutTree) {
|
||||
mapperManager.getProblemsAnalyser().checkProblems((AbstractInOutTree) treeNodeRoot.eContainer());
|
||||
|
||||
@@ -29,7 +29,6 @@ import org.eclipse.draw2d.TextUtilities;
|
||||
import org.eclipse.draw2d.geometry.Dimension;
|
||||
import org.eclipse.draw2d.geometry.Insets;
|
||||
import org.eclipse.draw2d.geometry.Rectangle;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.talend.designer.xmlmap.ui.resource.ColorInfo;
|
||||
@@ -72,10 +71,7 @@ public class ToolBarButtonImageFigure extends ImageFigure {
|
||||
setBorder(new MarginBorder(2));
|
||||
if (image != null) {
|
||||
this.enabledImage = image;
|
||||
this.disabledImage = new Image(image.getDevice(), image, SWT.IMAGE_DISABLE);
|
||||
ImageProviderMapper.cacheDisabledImage(disabledImage);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -84,15 +80,18 @@ public class ToolBarButtonImageFigure extends ImageFigure {
|
||||
protected void initlistener() {
|
||||
listener = new MouseMotionListener() {
|
||||
|
||||
@Override
|
||||
public void mouseMoved(MouseEvent me) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseHover(MouseEvent me) {
|
||||
addLineBorder();
|
||||
setHoverColor();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent me) {
|
||||
if (Clickable.STYLE_TOGGLE == getStyle()) {
|
||||
if (!isSelected()) {
|
||||
@@ -105,10 +104,12 @@ public class ToolBarButtonImageFigure extends ImageFigure {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent me) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseDragged(MouseEvent me) {
|
||||
|
||||
}
|
||||
@@ -117,14 +118,17 @@ public class ToolBarButtonImageFigure extends ImageFigure {
|
||||
|
||||
this.addMouseListener(new MouseListener() {
|
||||
|
||||
@Override
|
||||
public void mousePressed(MouseEvent me) {
|
||||
toolBarButtonPressed(me);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseReleased(MouseEvent me) {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseDoubleClicked(MouseEvent me) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
@@ -172,6 +176,7 @@ public class ToolBarButtonImageFigure extends ImageFigure {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEnabled(boolean value) {
|
||||
super.setEnabled(value);
|
||||
changeImage();
|
||||
@@ -183,6 +188,7 @@ public class ToolBarButtonImageFigure extends ImageFigure {
|
||||
setImage(enabledImage);
|
||||
}
|
||||
} else {
|
||||
this.disabledImage = ImageProviderMapper.getDisabledImage(enabledImage);
|
||||
if (getImage() != disabledImage) {
|
||||
setImage(disabledImage);
|
||||
}
|
||||
@@ -213,6 +219,7 @@ public class ToolBarButtonImageFigure extends ImageFigure {
|
||||
/**
|
||||
* @return The Image that this Figure displays
|
||||
*/
|
||||
@Override
|
||||
public Image getImage() {
|
||||
return img;
|
||||
}
|
||||
@@ -222,6 +229,7 @@ public class ToolBarButtonImageFigure extends ImageFigure {
|
||||
*
|
||||
* @see org.eclipse.draw2d.Figure#getPreferredSize(int, int)
|
||||
*/
|
||||
@Override
|
||||
public Dimension getPreferredSize(int wHint, int hHint) {
|
||||
|
||||
Insets i = getInsets();
|
||||
@@ -236,8 +244,9 @@ public class ToolBarButtonImageFigure extends ImageFigure {
|
||||
|
||||
protected Dimension calculateLabelSize(Dimension txtSize) {
|
||||
int gap = getIconTextGap();
|
||||
if (getText().equals("")) //$NON-NLS-1$
|
||||
if (getText().equals("")) {
|
||||
gap = 0;
|
||||
}
|
||||
Dimension d = new Dimension(0, 0);
|
||||
d.width = gap + txtSize.width;
|
||||
d.height = txtSize.height;
|
||||
@@ -248,11 +257,14 @@ public class ToolBarButtonImageFigure extends ImageFigure {
|
||||
/**
|
||||
* @see org.eclipse.draw2d.Figure#paintFigure(Graphics)
|
||||
*/
|
||||
@Override
|
||||
protected void paintFigure(Graphics graphics) {
|
||||
if (isOpaque())
|
||||
if (isOpaque()) {
|
||||
graphics.fillRectangle(getBounds());
|
||||
if (getBorder() instanceof AbstractBackground)
|
||||
}
|
||||
if (getBorder() instanceof AbstractBackground) {
|
||||
((AbstractBackground) getBorder()).paintBackground(this, graphics, NO_INSETS);
|
||||
}
|
||||
|
||||
int x, y;
|
||||
Rectangle area = getClientArea();
|
||||
@@ -302,6 +314,7 @@ public class ToolBarButtonImageFigure extends ImageFigure {
|
||||
*
|
||||
* @param flag A constant indicating the alignment
|
||||
*/
|
||||
@Override
|
||||
public void setAlignment(int flag) {
|
||||
alignment = flag;
|
||||
}
|
||||
@@ -313,22 +326,26 @@ public class ToolBarButtonImageFigure extends ImageFigure {
|
||||
*
|
||||
* @param image The Image to be displayed. It can be <code>null</code>.
|
||||
*/
|
||||
@Override
|
||||
public void setImage(Image image) {
|
||||
if (img == image)
|
||||
if (img == image) {
|
||||
return;
|
||||
}
|
||||
img = image;
|
||||
if (img != null)
|
||||
if (img != null) {
|
||||
size = new Rectangle(image.getBounds()).getSize();
|
||||
else
|
||||
} else {
|
||||
size = new Dimension();
|
||||
}
|
||||
revalidate();
|
||||
notifyImageChanged();
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void setIconTextGap(int gap) {
|
||||
if (iconTextGap == gap)
|
||||
if (iconTextGap == gap) {
|
||||
return;
|
||||
}
|
||||
iconTextGap = gap;
|
||||
repaint();
|
||||
revalidate();
|
||||
@@ -339,8 +356,9 @@ public class ToolBarButtonImageFigure extends ImageFigure {
|
||||
}
|
||||
|
||||
protected Dimension getTextSize() {
|
||||
if (textSize == null)
|
||||
if (textSize == null) {
|
||||
textSize = calculateTextSize();
|
||||
}
|
||||
return textSize;
|
||||
}
|
||||
|
||||
@@ -362,6 +380,7 @@ public class ToolBarButtonImageFigure extends ImageFigure {
|
||||
super(outer, inner);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Insets getInsets(IFigure figure) {
|
||||
Insets insets = null;
|
||||
if (inner != null) {
|
||||
|
||||
@@ -12,13 +12,12 @@
|
||||
// ============================================================================
|
||||
package org.talend.designer.xmlmap.ui.resource;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.talend.designer.xmlmap.XmlMapPlugin;
|
||||
|
||||
@@ -32,7 +31,7 @@ public class ImageProviderMapper {
|
||||
|
||||
private static Map<ImageInfo, Image> imageCache = new HashMap<ImageInfo, Image>();
|
||||
|
||||
private static List<Image> disabledImageCache = new ArrayList<Image>();
|
||||
private static Map<Image, Image> disabledImageCache = new HashMap<Image, Image>();
|
||||
|
||||
public static Image getImage(ImageDescriptor desc) {
|
||||
return desc.createImage();
|
||||
@@ -52,14 +51,27 @@ public class ImageProviderMapper {
|
||||
return ImageDescriptor.createFromFile(XmlMapPlugin.class, image.getPath());
|
||||
}
|
||||
|
||||
public static void cacheDisabledImage(Image image) {
|
||||
disabledImageCache.add(image);
|
||||
public static Image getDisabledImage(Image image) {
|
||||
Image disabledImage = disabledImageCache.get(image);
|
||||
if (disabledImage != null) {
|
||||
return disabledImage;
|
||||
}
|
||||
disabledImage = new Image(image.getDevice(), image, SWT.IMAGE_DISABLE);
|
||||
disabledImageCache.put(image, disabledImage);
|
||||
return disabledImage;
|
||||
}
|
||||
|
||||
/**
|
||||
* You can continue to use the provider after call this method.
|
||||
*/
|
||||
public static void releaseImages() {
|
||||
for (Image image : disabledImageCache.values()) {
|
||||
if (!image.isDisposed()) {
|
||||
image.dispose();
|
||||
}
|
||||
}
|
||||
disabledImageCache.clear();
|
||||
|
||||
Collection<Image> images = imageCache.values();
|
||||
for (Image image : images) {
|
||||
if (!image.isDisposed()) {
|
||||
@@ -68,16 +80,18 @@ public class ImageProviderMapper {
|
||||
}
|
||||
imageCache.clear();
|
||||
|
||||
for (Image image : disabledImageCache) {
|
||||
if (!image.isDisposed()) {
|
||||
image.dispose();
|
||||
}
|
||||
}
|
||||
disabledImageCache.clear();
|
||||
}
|
||||
|
||||
public static void dispose(ImageInfo imageInfo) {
|
||||
|
||||
Image image = imageCache.get(imageInfo);
|
||||
|
||||
Image disabledImage = disabledImageCache.get(image);
|
||||
if (disabledImage != null && !disabledImage.isDisposed()) {
|
||||
disabledImage.dispose();
|
||||
}
|
||||
disabledImageCache.remove(image);
|
||||
|
||||
if (!image.isDisposed()) {
|
||||
image.dispose();
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.emf.common.util.EList;
|
||||
import org.eclipse.gef.EditPart;
|
||||
import org.eclipse.gef.GraphicalViewer;
|
||||
import org.eclipse.jface.viewers.CellEditor;
|
||||
import org.eclipse.jface.viewers.ISelectionChangedListener;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
@@ -26,6 +28,7 @@ import org.eclipse.jface.viewers.SelectionChangedEvent;
|
||||
import org.talend.commons.ui.swt.extended.table.ExtendedTableModel;
|
||||
import org.talend.commons.ui.swt.tableviewer.IModifiedBeanListener;
|
||||
import org.talend.commons.ui.swt.tableviewer.ModifiedBeanEvent;
|
||||
import org.talend.commons.ui.swt.tableviewer.TableViewerCreator;
|
||||
import org.talend.commons.utils.data.list.IListenableListListener;
|
||||
import org.talend.commons.utils.data.list.ListenableListEvent;
|
||||
import org.talend.commons.utils.data.list.ListenableListEvent.TYPE;
|
||||
@@ -53,7 +56,10 @@ import org.talend.designer.xmlmap.parts.TreeNodeEditPart;
|
||||
import org.talend.designer.xmlmap.parts.directedit.ExpressionCellEditor;
|
||||
import org.talend.designer.xmlmap.parts.directedit.XmlMapNodeDirectEditManager;
|
||||
import org.talend.designer.xmlmap.ui.MapperUI;
|
||||
import org.talend.designer.xmlmap.ui.tabs.table.TreeSchemaTableEditor;
|
||||
import org.talend.designer.xmlmap.ui.tabs.table.TreeSchemaTableEntry;
|
||||
import org.talend.designer.xmlmap.ui.tabs.table.XmlTreeSchemaTableView;
|
||||
import org.talend.designer.xmlmap.ui.tabs.table.utils.SchemaTableUtils;
|
||||
import org.talend.designer.xmlmap.util.XmlMapUtil;
|
||||
import org.talend.designer.xmlmap.util.problem.ProblemsAnalyser;
|
||||
|
||||
@@ -78,6 +84,8 @@ public class MapperManager implements ISelectionChangedListener {
|
||||
|
||||
private XmlMapNodeDirectEditManager currentDirectEditManager;
|
||||
|
||||
private GraphicalViewer graphicalViewer;
|
||||
|
||||
private boolean isDieOnError;
|
||||
|
||||
public static final String ERROR_REJECT = "ErrorReject";//$NON-NLS-1$
|
||||
@@ -207,15 +215,16 @@ public class MapperManager implements ISelectionChangedListener {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ExtendedTableModel<TreeSchemaTableEntry> oldModel = mapperUI.getTabFolderEditors().getInputTreeSchemaEditor()
|
||||
.getExtendedTableModel();
|
||||
if (oldModel != null && oldModel.getBeanCount() != 0) {
|
||||
List<TreeSchemaTableEntry> treeSchemaEntrys = new ArrayList<TreeSchemaTableEntry>();
|
||||
mapperUI.getTabFolderEditors().getInputTreeSchemaEditor()
|
||||
.setExtendedControlModel(new ExtendedTableModel<TreeSchemaTableEntry>("Tree Schema", treeSchemaEntrys));
|
||||
mapperUI.getTabFolderEditors().getInputTreeSchemaEditor().getTableViewerCreator().refresh();
|
||||
}
|
||||
refreshStyledTextEditor(null);
|
||||
// ExtendedTableModel<TreeSchemaTableEntry> oldModel =
|
||||
// mapperUI.getTabFolderEditors().getInputTreeSchemaEditor()
|
||||
// .getExtendedTableModel();
|
||||
// if (oldModel != null && oldModel.getBeanCount() != 0) {
|
||||
// List<TreeSchemaTableEntry> treeSchemaEntrys = new ArrayList<TreeSchemaTableEntry>();
|
||||
// mapperUI.getTabFolderEditors().getInputTreeSchemaEditor()
|
||||
// .setExtendedControlModel(new ExtendedTableModel<TreeSchemaTableEntry>("Tree Schema", treeSchemaEntrys));
|
||||
// mapperUI.getTabFolderEditors().getInputTreeSchemaEditor().getTableViewerCreator().refresh();
|
||||
// }
|
||||
// refreshStyledTextEditor(null);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -230,6 +239,7 @@ public class MapperManager implements ISelectionChangedListener {
|
||||
}
|
||||
List<Integer> selectionIndices = new ArrayList<Integer>();
|
||||
|
||||
List<TreeNode> selectedDocChild = new ArrayList<TreeNode>();
|
||||
Iterator iterator = selection.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
Object obj = iterator.next();
|
||||
@@ -237,6 +247,11 @@ public class MapperManager implements ISelectionChangedListener {
|
||||
TreeNode model = (TreeNode) ((TreeNodeEditPart) obj).getModel();
|
||||
if (model.eContainer() == selectedTree) {
|
||||
selectionIndices.add(nodes.indexOf(model));
|
||||
} else {
|
||||
AbstractInOutTree abstractInOutTree = XmlMapUtil.getAbstractInOutTree(model);
|
||||
if (abstractInOutTree == selectedTree) {
|
||||
selectedDocChild.add(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -246,21 +261,108 @@ public class MapperManager implements ISelectionChangedListener {
|
||||
}
|
||||
|
||||
MetadataTableEditorView metaEditorView = null;
|
||||
XmlTreeSchemaTableView treeEditorView = null;
|
||||
if (selectedTree instanceof InputXmlTree) {
|
||||
metaEditorView = mapperUI.getTabFolderEditors().getInputMetaEditorView();
|
||||
treeEditorView = mapperUI.getTabFolderEditors().getInputTreeSchemaEditor();
|
||||
} else {
|
||||
metaEditorView = mapperUI.getTabFolderEditors().getOutputMetaEditorView();
|
||||
treeEditorView = mapperUI.getTabFolderEditors().getOutputTreeSchemaEditor();
|
||||
}
|
||||
// fix the no more handler exception when select many columns
|
||||
// if (metaEditorView != null) {
|
||||
// metaEditorView.getTableViewerCreator().refresh();
|
||||
// }
|
||||
// metaEditorView.getExtendedTableViewer().getTableViewerCreator().getSelectionHelper().setSelection(selections);
|
||||
metaEditorView.getTableViewerCreator().getSelectionHelper().setActiveFireSelectionChanged(false);
|
||||
metaEditorView.getExtendedTableViewer().getTableViewerCreator().getSelectionHelper().setSelection(selections);
|
||||
metaEditorView.getTableViewerCreator().getSelectionHelper().setActiveFireSelectionChanged(true);
|
||||
metaEditorView.getExtendedToolbar().updateEnabledStateOfButtons();
|
||||
|
||||
// tree schema editor
|
||||
// check if the first selection in selectedTree is displayed in current page ,if yes , select this record in
|
||||
// tree schema editor,
|
||||
// if no, change page
|
||||
if (!selectedDocChild.isEmpty()) {
|
||||
treeEditorView.getTableViewerCreator().getSelectionHelper().setActiveFireSelectionChanged(false);
|
||||
TreeNode firstSelection = null;
|
||||
if (selectedDocChild.size() > 1) {
|
||||
selectionIndices = new ArrayList<Integer>();
|
||||
List<TreeNode> allList = new ArrayList<TreeNode>();
|
||||
for (TreeNode schemaNodes : nodes) {
|
||||
if (XmlMapUtil.DOCUMENT.equals(schemaNodes.getType())) {
|
||||
allList.addAll(SchemaTableUtils.getTreeSchemaEnties(schemaNodes));
|
||||
}
|
||||
}
|
||||
int minIndex = allList.size();
|
||||
|
||||
for (TreeNode selected : selectedDocChild) {
|
||||
int indexOf = allList.indexOf(selected);
|
||||
if (indexOf != -1 && indexOf < minIndex) {
|
||||
firstSelection = selected;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
firstSelection = selectedDocChild.get(0);
|
||||
}
|
||||
treeEditorView.getExtendedTableModel().changePageIfNeeded(firstSelection);
|
||||
|
||||
// update selection
|
||||
selectionIndices = new ArrayList<Integer>();
|
||||
for (TreeNode selected : selectedDocChild) {
|
||||
int indexOf = treeEditorView.getExtendedTableModel().getBeansList().indexOf(selected);
|
||||
if (indexOf != -1) {
|
||||
selectionIndices.add(indexOf);
|
||||
}
|
||||
}
|
||||
selections = new int[selectionIndices.size()];
|
||||
for (int i = 0; i < selectionIndices.size(); i++) {
|
||||
selections[i] = selectionIndices.get(i);
|
||||
}
|
||||
|
||||
treeEditorView.getExtendedTableViewer().getTableViewerCreator().getSelectionHelper().setSelection(selections);
|
||||
treeEditorView.getTableViewerCreator().getSelectionHelper().setActiveFireSelectionChanged(true);
|
||||
treeEditorView.getExtendedToolbar().updateEnabledStateOfButtons();
|
||||
}
|
||||
}
|
||||
|
||||
public void selectLinkedInputTableEntries(int[] selectionIndices, boolean isDoc) {
|
||||
if (selectedInputTree != null) {
|
||||
List nodes = null;
|
||||
if (!isDoc) {
|
||||
nodes = selectedInputTree.getNodes();
|
||||
} else {
|
||||
nodes = mapperUI.getTabFolderEditors().getInputTreeSchemaEditor().getExtendedTableModel().getBeansList();
|
||||
}
|
||||
|
||||
selectLinkedTableEntries(nodes, selectionIndices);
|
||||
}
|
||||
}
|
||||
|
||||
public void selectLinkedOutputTableEntries(int[] selectionIndices, boolean isDoc) {
|
||||
if (selectedOutputTree != null) {
|
||||
List nodes = null;
|
||||
if (!isDoc) {
|
||||
nodes = selectedOutputTree.getNodes();
|
||||
} else {
|
||||
nodes = mapperUI.getTabFolderEditors().getOutputTreeSchemaEditor().getExtendedTableModel().getBeansList();
|
||||
}
|
||||
selectLinkedTableEntries(nodes, selectionIndices);
|
||||
}
|
||||
}
|
||||
|
||||
private void selectLinkedTableEntries(List nodes, int[] selectionIndices) {
|
||||
if (getGraphicalViewer() != null) {
|
||||
boolean select = false;
|
||||
for (int selectionIndice : selectionIndices) {
|
||||
if (selectionIndice < nodes.size()) {
|
||||
Object object = getGraphicalViewer().getEditPartRegistry().get(nodes.get(selectionIndice));
|
||||
if (object instanceof EditPart) {
|
||||
if (!select) {
|
||||
getGraphicalViewer().select((EditPart) object);
|
||||
select = true;
|
||||
} else {
|
||||
getGraphicalViewer().appendSelection((EditPart) object);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void refreshStyledTextEditor(AbstractNodePart nodePart) {
|
||||
@@ -290,20 +392,6 @@ public class MapperManager implements ISelectionChangedListener {
|
||||
mapperUI.getTabFolderEditors().getStyledTextHandler().setSelectedNodePart(nodePart);
|
||||
}
|
||||
|
||||
public void refreshInputTreeSchemaEditor(InputXmlTree tree) {
|
||||
ExtendedTableModel<TreeSchemaTableEntry> selectedInputTreeSchemaModel = getSelectedInputTreeSchemaModel(tree);
|
||||
mapperUI.getTabFolderEditors().getInputTreeSchemaEditor().setExtendedControlModel(selectedInputTreeSchemaModel);
|
||||
mapperUI.getTabFolderEditors().getInputTreeSchemaEditor().getTableViewerCreator().refresh();
|
||||
}
|
||||
|
||||
public void refreshOutputTreeSchemaEditor(OutputXmlTree tree) {
|
||||
ExtendedTableModel<TreeSchemaTableEntry> selectedInputTreeSchemaModel = getSelectedOutputTreeSchemaModel(tree);
|
||||
if (mapperUI.getTabFolderEditors().getOutputTreeSchemaEditor() != null) {
|
||||
mapperUI.getTabFolderEditors().getOutputTreeSchemaEditor().setExtendedControlModel(selectedInputTreeSchemaModel);
|
||||
mapperUI.getTabFolderEditors().getOutputTreeSchemaEditor().getTableViewerCreator().refresh();
|
||||
}
|
||||
}
|
||||
|
||||
public void selectInputXmlTree(InputXmlTree inputTree) {
|
||||
if (inputTree != selectedInputTree) {
|
||||
selectedInputTree = inputTree;
|
||||
@@ -370,7 +458,7 @@ public class MapperManager implements ISelectionChangedListener {
|
||||
}
|
||||
problemsAnalyser.checkProblems(selectedInputTree);
|
||||
mapperUI.updateStatusBar();
|
||||
refreshInputTreeSchemaEditor(selectedInputTree);
|
||||
inputTreeSchemaBeanListModified();
|
||||
}
|
||||
}
|
||||
} else if (AbstractMetadataTableEditorView.ID_COLUMN_KEY.equals(event.column.getId())) {
|
||||
@@ -534,7 +622,7 @@ public class MapperManager implements ISelectionChangedListener {
|
||||
inputMetaEditorView.setMetadataTableEditor(editor);
|
||||
}
|
||||
|
||||
refreshInputTreeSchemaEditor(inputTree);
|
||||
refreshTreeSchemaEditor(inputTree);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -542,11 +630,11 @@ public class MapperManager implements ISelectionChangedListener {
|
||||
private void processColumnNameChanged(final TreeNode treeNode) {
|
||||
XmlMapUtil.updateXPathAndExpression(copyOfMapData, getMapperComponent().getExpressionManager(), treeNode,
|
||||
treeNode.getName(), XmlMapUtil.getXPathLength(treeNode.getXpath()), true);
|
||||
if (treeNode instanceof OutputTreeNode) {
|
||||
getMapperUI().getTabFolderEditors().getOutputTreeSchemaEditor().refresh();
|
||||
} else {
|
||||
getMapperUI().getTabFolderEditors().getInputTreeSchemaEditor().refresh();
|
||||
}
|
||||
// if (treeNode instanceof OutputTreeNode) {
|
||||
// getMapperUI().getTabFolderEditors().getOutputTreeSchemaEditor().refresh();
|
||||
// } else {
|
||||
// getMapperUI().getTabFolderEditors().getInputTreeSchemaEditor().refresh();
|
||||
// }
|
||||
}
|
||||
|
||||
public void selectOutputXmlTree(OutputXmlTree outputTree) {
|
||||
@@ -633,7 +721,7 @@ public class MapperManager implements ISelectionChangedListener {
|
||||
}
|
||||
problemsAnalyser.checkProblems(selectedOutputTree);
|
||||
mapperUI.updateStatusBar();
|
||||
refreshOutputTreeSchemaEditor(selectedOutputTree);
|
||||
outputTreeSchemaBeanListModified();
|
||||
}
|
||||
}
|
||||
} else if (AbstractMetadataTableEditorView.ID_COLUMN_KEY.equals(event.column.getId())) {
|
||||
@@ -779,7 +867,7 @@ public class MapperManager implements ISelectionChangedListener {
|
||||
|
||||
});
|
||||
}
|
||||
refreshOutputTreeSchemaEditor(outputTree);
|
||||
refreshTreeSchemaEditor(outputTree);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -813,4 +901,90 @@ public class MapperManager implements ISelectionChangedListener {
|
||||
public InputXmlTree getMainInputTree() {
|
||||
return mainInputTree;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for graphicalViewer.
|
||||
*
|
||||
* @return the graphicalViewer
|
||||
*/
|
||||
public GraphicalViewer getGraphicalViewer() {
|
||||
return this.graphicalViewer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the graphicalViewer.
|
||||
*
|
||||
* @param graphicalViewer the graphicalViewer to set
|
||||
*/
|
||||
public void setGraphicalViewer(GraphicalViewer graphicalViewer) {
|
||||
this.graphicalViewer = graphicalViewer;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* DOC refresh column when property of treenode is changed
|
||||
*
|
||||
* @param treeNode
|
||||
*/
|
||||
public void refreshTreeSchemaColumn(TreeNode treeNode) {
|
||||
TableViewerCreator<TreeNode> tableViewerCreator = null;
|
||||
if (treeNode instanceof OutputTreeNode) {
|
||||
tableViewerCreator = mapperUI.getTabFolderEditors().getOutputTreeSchemaEditor().getTableViewerCreator();
|
||||
|
||||
} else {
|
||||
tableViewerCreator = mapperUI.getTabFolderEditors().getInputTreeSchemaEditor().getTableViewerCreator();
|
||||
|
||||
}
|
||||
if (tableViewerCreator != null && tableViewerCreator.getTable() != null && !tableViewerCreator.getTable().isDisposed()) {
|
||||
tableViewerCreator.getTableViewer().refresh(treeNode);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void outputTreeSchemaBeanListModified() {
|
||||
ExtendedTableModel<TreeNode> extendedTableModel = mapperUI.getTabFolderEditors().getOutputTreeSchemaEditor()
|
||||
.getExtendedTableModel();
|
||||
if (extendedTableModel != null) {
|
||||
((TreeSchemaTableEditor) extendedTableModel).beanListModified();
|
||||
}
|
||||
}
|
||||
|
||||
private void inputTreeSchemaBeanListModified() {
|
||||
ExtendedTableModel<TreeNode> extendedTableModel = mapperUI.getTabFolderEditors().getInputTreeSchemaEditor()
|
||||
.getExtendedTableModel();
|
||||
if (extendedTableModel != null) {
|
||||
((TreeSchemaTableEditor) extendedTableModel).beanListModified();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* DOC Administrator Comment method "refreshTreeSchemaEditor".
|
||||
*
|
||||
* @param outputTree
|
||||
*/
|
||||
public void refreshTreeSchemaEditor(AbstractInOutTree outputTree) {
|
||||
XmlTreeSchemaTableView outputTreeSchemaEditor = null;
|
||||
if (outputTree instanceof InputXmlTree) {
|
||||
outputTreeSchemaEditor = mapperUI.getTabFolderEditors().getInputTreeSchemaEditor();
|
||||
} else {
|
||||
outputTreeSchemaEditor = mapperUI.getTabFolderEditors().getOutputTreeSchemaEditor();
|
||||
}
|
||||
|
||||
TreeSchemaTableEditor editor = new TreeSchemaTableEditor(outputTree);
|
||||
outputTreeSchemaEditor.setExtendedTableModel(editor);
|
||||
// editor.setModifiedBeanListenable(outputTreeSchemaEditor.getTableViewerCreator());
|
||||
|
||||
}
|
||||
|
||||
public void beanListModified(boolean input) {
|
||||
XmlTreeSchemaTableView outputTreeSchemaEditor = null;
|
||||
if (input) {
|
||||
outputTreeSchemaEditor = mapperUI.getTabFolderEditors().getInputTreeSchemaEditor();
|
||||
} else {
|
||||
outputTreeSchemaEditor = mapperUI.getTabFolderEditors().getOutputTreeSchemaEditor();
|
||||
}
|
||||
|
||||
outputTreeSchemaEditor.getExtendedTableModel().beanListModified();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,15 +110,50 @@ public class TabFolderEditors extends CTabFolder {
|
||||
inOutMetaEditorContainer.setLayout(new RowLayout(SWT.HORIZONTAL));
|
||||
item.setControl(inOutMetaEditorContainer);
|
||||
|
||||
// input metadata table view
|
||||
inputMetaEditor = new XmlMapMetadataTableEditorView(inOutMetaEditorContainer, SWT.BORDER);
|
||||
inputMetaEditor.initGraphicComponents();
|
||||
// inputMetaEditor.getExtendedTableViewer().setCommandStack(commandStack);
|
||||
ILineSelectionListener metadataEditorViewerSelectionChangedListener = new ILineSelectionListener() {
|
||||
|
||||
@Override
|
||||
public void handle(LineSelectionEvent e) {
|
||||
if (inputMetaEditor.getTableViewerCreator() == e.source && mapperManage.getGraphicalViewer() != null) {
|
||||
if (inputMetaEditor.getExtendedTableViewer().isExecuteSelectionEvent()) {
|
||||
mapperManage.selectLinkedInputTableEntries(inputMetaEditor.getTableViewerCreator().getTable()
|
||||
.getSelectionIndices(), false);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
inputMetaEditor.getTableViewerCreator().getSelectionHelper()
|
||||
.addAfterSelectionListener(metadataEditorViewerSelectionChangedListener);
|
||||
|
||||
addListenersToInputButtons();
|
||||
|
||||
// output metadata table view
|
||||
outputMetaEditor = new XmlMapMetadataTableEditorView(inOutMetaEditorContainer, SWT.BORDER);
|
||||
outputMetaEditor.initGraphicComponents();
|
||||
// outputMetaEditor.getExtendedTableViewer().setCommandStack(commandStack);
|
||||
metadataEditorViewerSelectionChangedListener = new ILineSelectionListener() {
|
||||
|
||||
@Override
|
||||
public void handle(LineSelectionEvent e) {
|
||||
if (outputMetaEditor.getTableViewerCreator() == e.source && mapperManage.getGraphicalViewer() != null) {
|
||||
if (outputMetaEditor.getExtendedTableViewer().isExecuteSelectionEvent()) {
|
||||
mapperManage.selectLinkedOutputTableEntries(outputMetaEditor.getTableViewerCreator().getTable()
|
||||
.getSelectionIndices(), false);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
outputMetaEditor.getTableViewerCreator().getSelectionHelper()
|
||||
.addAfterSelectionListener(metadataEditorViewerSelectionChangedListener);
|
||||
|
||||
addListenersToOutputButtons();
|
||||
|
||||
@@ -128,14 +163,48 @@ public class TabFolderEditors extends CTabFolder {
|
||||
SashForm xmlTreeEditorContainer = new SashForm(tabFolderEditors, SWT.SMOOTH | SWT.HORIZONTAL | SWT.SHADOW_OUT);
|
||||
xmlTreeEditorContainer.setLayout(new RowLayout(SWT.HORIZONTAL));
|
||||
item.setControl(xmlTreeEditorContainer);
|
||||
inputTreeSchemaEditor = new XmlTreeSchemaTableView(mapperManage.getSelectedInputTreeSchemaModel(null),
|
||||
xmlTreeEditorContainer);
|
||||
// input tree schema table view
|
||||
inputTreeSchemaEditor = new XmlTreeSchemaTableView(xmlTreeEditorContainer, SWT.BORDER);
|
||||
inputTreeSchemaEditor.initGraphicComponents();
|
||||
|
||||
outputTreeSchemaEditor = new OutputXmlTreeSchemaTableView(mapperManage.getSelectedOutputTreeSchemaModel(null),
|
||||
xmlTreeEditorContainer);
|
||||
metadataEditorViewerSelectionChangedListener = new ILineSelectionListener() {
|
||||
|
||||
@Override
|
||||
public void handle(LineSelectionEvent e) {
|
||||
if (inputTreeSchemaEditor.getTableViewerCreator() == e.source && mapperManage.getGraphicalViewer() != null) {
|
||||
if (inputTreeSchemaEditor.getExtendedTableViewer().isExecuteSelectionEvent()) {
|
||||
mapperManage.selectLinkedInputTableEntries(inputTreeSchemaEditor.getTableViewerCreator().getTable()
|
||||
.getSelectionIndices(), true);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
inputTreeSchemaEditor.getTableViewerCreator().getSelectionHelper()
|
||||
.addAfterSelectionListener(metadataEditorViewerSelectionChangedListener);
|
||||
|
||||
// output tree schema table view
|
||||
outputTreeSchemaEditor = new OutputXmlTreeSchemaTableView(xmlTreeEditorContainer, SWT.BORDER);
|
||||
outputTreeSchemaEditor.initGraphicComponents();
|
||||
|
||||
metadataEditorViewerSelectionChangedListener = new ILineSelectionListener() {
|
||||
|
||||
@Override
|
||||
public void handle(LineSelectionEvent e) {
|
||||
if (outputTreeSchemaEditor.getTableViewerCreator() == e.source && mapperManage.getGraphicalViewer() != null) {
|
||||
if (outputTreeSchemaEditor.getExtendedTableViewer().isExecuteSelectionEvent()) {
|
||||
mapperManage.selectLinkedOutputTableEntries(outputTreeSchemaEditor.getTableViewerCreator().getTable()
|
||||
.getSelectionIndices(), true);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
outputTreeSchemaEditor.getTableViewerCreator().getSelectionHelper()
|
||||
.addAfterSelectionListener(metadataEditorViewerSelectionChangedListener);
|
||||
|
||||
item = new CTabItem(tabFolderEditors, SWT.BORDER);
|
||||
item.setText(Messages.getString("TabFolderEditors.ExpressionEditor.Title")); //$NON-NLS-1$
|
||||
|
||||
|
||||
@@ -13,21 +13,21 @@
|
||||
package org.talend.designer.xmlmap.ui.tabs.table;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.talend.commons.ui.swt.extended.table.AbstractExtendedControlModel;
|
||||
import org.talend.commons.ui.swt.extended.table.AbstractExtendedTableViewer;
|
||||
import org.talend.commons.ui.swt.extended.table.ExtendedTableModel;
|
||||
import org.talend.commons.ui.swt.advanced.dataeditor.AbstractDataTableEditorView;
|
||||
import org.talend.commons.ui.swt.advanced.dataeditor.ExtendedToolbarView;
|
||||
import org.talend.commons.ui.swt.tableviewer.TableViewerCreator;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.NodeType;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode;
|
||||
import org.talend.designer.xmlmap.ui.tabs.table.toolbar.XmlMapExtendedToolbarView;
|
||||
import org.talend.designer.xmlmap.util.XmlMapUtil;
|
||||
import org.talend.repository.ui.wizards.metadata.connection.files.xml.util.StringUtil;
|
||||
|
||||
/**
|
||||
* WCHEN talend class global comment. Detailled comment
|
||||
*/
|
||||
public abstract class AbstractXmlTreeSchemaTableView extends AbstractExtendedTableViewer<TreeSchemaTableEntry> {
|
||||
public abstract class AbstractXmlTreeSchemaTableView extends AbstractDataTableEditorView<TreeNode> {
|
||||
|
||||
public static final String ID_COLUMN_XPATH = "xpath";
|
||||
|
||||
@@ -39,48 +39,8 @@ public abstract class AbstractXmlTreeSchemaTableView extends AbstractExtendedTab
|
||||
|
||||
private Label titleLabel;
|
||||
|
||||
public AbstractXmlTreeSchemaTableView(ExtendedTableModel<TreeSchemaTableEntry> extendedTableModel, Composite parent,
|
||||
boolean readOnly, boolean initTable) {
|
||||
super(extendedTableModel, parent, readOnly, initTable);
|
||||
this.parentComposite = parent;
|
||||
}
|
||||
|
||||
public void initGraphicComponents() {
|
||||
mainComposite = new Composite(parentComposite, SWT.NONE);
|
||||
if (parentComposite.getBackground() != null && !parentComposite.getBackground().equals(mainComposite.getBackground())) {
|
||||
mainComposite.setBackground(parentComposite.getBackground());
|
||||
}
|
||||
GridLayout layout = new GridLayout();
|
||||
mainComposite.setLayout(layout);
|
||||
titleLabel = new Label(mainComposite, SWT.NONE);
|
||||
titleLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
|
||||
if (parentComposite.getBackground() != null && !parentComposite.getBackground().equals(titleLabel.getBackground())) {
|
||||
titleLabel.setBackground(parentComposite.getBackground());
|
||||
}
|
||||
if (getExtendedTableModel() != null) {
|
||||
titleLabel.setText(getExtendedTableModel().getName());
|
||||
}
|
||||
|
||||
initTable();
|
||||
if (getExtendedControlModel() != null) {
|
||||
initModelListeners();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.talend.commons.ui.swt.extended.table.AbstractExtendedControlViewer#setExtendedControlModel(org.talend.commons
|
||||
* .ui.swt.extended.table.AbstractExtendedControlModel)
|
||||
*/
|
||||
@Override
|
||||
public void setExtendedControlModel(AbstractExtendedControlModel model) {
|
||||
super.setExtendedControlModel(model);
|
||||
if (titleLabel != null) {
|
||||
titleLabel.setText(model.getName());
|
||||
}
|
||||
public AbstractXmlTreeSchemaTableView(Composite parentComposite, int mainCompositeStyle) {
|
||||
super(parentComposite, mainCompositeStyle, false);
|
||||
}
|
||||
|
||||
protected String validateXPath(String newValue, int beanPosition) {
|
||||
@@ -92,9 +52,9 @@ public abstract class AbstractXmlTreeSchemaTableView extends AbstractExtendedTab
|
||||
isValidName = false;
|
||||
return "Name can't be null";
|
||||
}
|
||||
TreeSchemaTableEntry bean = getExtendedTableModel().getBeansList().get(beanPosition);
|
||||
TreeNode bean = getExtendedTableModel().getBeansList().get(beanPosition);
|
||||
|
||||
if (NodeType.NAME_SPACE == bean.getTreeNode().getNodeType()) {
|
||||
if (NodeType.NAME_SPACE == bean.getNodeType()) {
|
||||
final String validateNameSpace = validateNameSpace(newValue, beanPosition);
|
||||
if (validateNameSpace != null) {
|
||||
return validateNameSpace;
|
||||
@@ -102,10 +62,10 @@ public abstract class AbstractXmlTreeSchemaTableView extends AbstractExtendedTab
|
||||
}
|
||||
|
||||
if (!StringUtil.validateLabelForXML(newValue)) {
|
||||
if (NodeType.ELEMENT == bean.getTreeNode().getNodeType()) {
|
||||
if (NodeType.ELEMENT == bean.getNodeType()) {
|
||||
isValidName = false;
|
||||
return "Element name is invalid";
|
||||
} else if (NodeType.ATTRIBUT == bean.getTreeNode().getNodeType()) {
|
||||
} else if (NodeType.ATTRIBUT == bean.getNodeType()) {
|
||||
isValidName = false;
|
||||
return "Attribute name is invalid";
|
||||
}
|
||||
@@ -114,8 +74,8 @@ public abstract class AbstractXmlTreeSchemaTableView extends AbstractExtendedTab
|
||||
return validateEntry(newValue, bean, beanPosition);
|
||||
}
|
||||
|
||||
protected String validateEntry(String newValue, TreeSchemaTableEntry bean, int beanPosition) {
|
||||
String newXPath = bean.getXPath();
|
||||
protected String validateEntry(String newValue, TreeNode bean, int beanPosition) {
|
||||
String newXPath = bean.getXpath();
|
||||
newXPath = newXPath.substring(0, newXPath.lastIndexOf(bean.getName()));
|
||||
newXPath = newXPath + newValue;
|
||||
if (getExtendedTableModel() != null) {
|
||||
@@ -123,8 +83,8 @@ public abstract class AbstractXmlTreeSchemaTableView extends AbstractExtendedTab
|
||||
if (i == beanPosition) {
|
||||
continue;
|
||||
}
|
||||
TreeSchemaTableEntry entry = getExtendedTableModel().getBeansList().get(i);
|
||||
if (newXPath.equals(entry.getXPath())) {
|
||||
TreeNode entry = getExtendedTableModel().getBeansList().get(i);
|
||||
if (newXPath.equals(entry.getXpath())) {
|
||||
isValidName = false;
|
||||
return "Name alrady existed";
|
||||
}
|
||||
@@ -138,16 +98,6 @@ public abstract class AbstractXmlTreeSchemaTableView extends AbstractExtendedTab
|
||||
this.getTableViewerCreator().getTableViewer().refresh();
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.talend.commons.ui.swt.extended.table.AbstractExtendedControlViewer#getParentComposite()
|
||||
*/
|
||||
@Override
|
||||
public Composite getParentComposite() {
|
||||
return mainComposite;
|
||||
}
|
||||
|
||||
protected String validateNameSpace(String newValue, int beanPosition) {
|
||||
if ((newValue.indexOf("(") != -1 || newValue.indexOf(")") != -1)
|
||||
&& !newValue.equals(XmlMapUtil.DEFAULT_NAME_SPACE_PREFIX)) {
|
||||
@@ -160,8 +110,8 @@ public abstract class AbstractXmlTreeSchemaTableView extends AbstractExtendedTab
|
||||
if (i == beanPosition) {
|
||||
continue;
|
||||
}
|
||||
TreeSchemaTableEntry entry = getExtendedTableModel().getBeansList().get(i);
|
||||
if (NodeType.NAME_SPACE == entry.getTreeNode().getNodeType() && newValue.equals(entry.getName())) {
|
||||
TreeNode entry = getExtendedTableModel().getBeansList().get(i);
|
||||
if (NodeType.NAME_SPACE == entry.getNodeType() && newValue.equals(entry.getName())) {
|
||||
isValidName = false;
|
||||
return "Namespace Prefix already exist";
|
||||
}
|
||||
@@ -172,4 +122,39 @@ public abstract class AbstractXmlTreeSchemaTableView extends AbstractExtendedTab
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.talend.commons.ui.swt.advanced.dataeditor.AbstractDataTableEditorView#getExtendedTableModel()
|
||||
*/
|
||||
@Override
|
||||
public TreeSchemaTableEditor getExtendedTableModel() {
|
||||
// TODO Auto-generated method stub
|
||||
return (TreeSchemaTableEditor) super.getExtendedTableModel();
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.talend.commons.ui.swt.advanced.dataeditor.AbstractDataTableEditorView#setTableViewerCreatorOptions(org.talend
|
||||
* .commons.ui.swt.tableviewer.TableViewerCreator)
|
||||
*/
|
||||
@Override
|
||||
protected void setTableViewerCreatorOptions(TableViewerCreator<TreeNode> newTableViewerCreator) {
|
||||
super.setTableViewerCreatorOptions(newTableViewerCreator);
|
||||
// newTableViewerCreator.setLazyLoad(true);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.talend.commons.ui.swt.advanced.dataeditor.AbstractDataTableEditorView#initToolBar()
|
||||
*/
|
||||
@Override
|
||||
protected ExtendedToolbarView initToolBar() {
|
||||
return new XmlMapExtendedToolbarView(getMainComposite(), SWT.NONE, getExtendedTableViewer());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
package org.talend.designer.xmlmap.ui.tabs.table;
|
||||
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.talend.commons.ui.swt.extended.table.ExtendedTableModel;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode;
|
||||
|
||||
/**
|
||||
* created by talend2 on 2012-8-8 Detailled comment
|
||||
@@ -27,13 +27,13 @@ public class OutputXmlTreeSchemaTableView extends XmlTreeSchemaTableView {
|
||||
* @param extendedTableModel
|
||||
* @param parent
|
||||
*/
|
||||
public OutputXmlTreeSchemaTableView(ExtendedTableModel<TreeSchemaTableEntry> extendedTableModel, Composite parent) {
|
||||
super(extendedTableModel, parent);
|
||||
public OutputXmlTreeSchemaTableView(Composite parentComposite, int mainCompositeStyle) {
|
||||
super(parentComposite, mainCompositeStyle);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String validateEntry(String newValue, TreeSchemaTableEntry bean, int beanPosition) {
|
||||
protected String validateEntry(String newValue, TreeNode bean, int beanPosition) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,184 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2013 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.designer.xmlmap.ui.tabs.table;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.talend.commons.ui.swt.extended.table.ExtendedTableModel;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.AbstractInOutTree;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.InputXmlTree;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.OutputXmlTree;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode;
|
||||
import org.talend.designer.xmlmap.ui.tabs.table.utils.SchemaTableUtils;
|
||||
import org.talend.designer.xmlmap.util.XmlMapUtil;
|
||||
|
||||
/**
|
||||
* created by wchen on 2013-1-23 Detailled comment
|
||||
*
|
||||
*/
|
||||
public class TreeSchemaTableEditor extends ExtendedTableModel<TreeNode> {
|
||||
|
||||
AbstractInOutTree absTree;
|
||||
|
||||
int pageCount = 1;
|
||||
|
||||
int currentPage = 1;
|
||||
|
||||
int maxColumns = 100;
|
||||
|
||||
public TreeSchemaTableEditor(AbstractInOutTree absTree) {
|
||||
this.absTree = absTree;
|
||||
initData();
|
||||
}
|
||||
|
||||
private void initData() {
|
||||
registerDataList(getSelectedInputTreeSchemaModel());
|
||||
}
|
||||
|
||||
private List<TreeNode> getSelectedInputTreeSchemaModel() {
|
||||
|
||||
List<TreeNode> beanList = new ArrayList<TreeNode>();
|
||||
List<TreeNode> tableModel = getAllBeanList();
|
||||
pageCount = tableModel.size() / maxColumns + (tableModel.size() % maxColumns == 0 ? 0 : 1);
|
||||
|
||||
if (currentPage <= pageCount) {
|
||||
int startIndex = (currentPage - 1) * maxColumns;
|
||||
int endIndex = currentPage * maxColumns - 1;
|
||||
endIndex = Math.min(tableModel.size(), endIndex);
|
||||
beanList.addAll(tableModel.subList(startIndex, endIndex));
|
||||
}
|
||||
|
||||
return beanList;
|
||||
}
|
||||
|
||||
private List<TreeNode> getAllBeanList() {
|
||||
List<TreeNode> tableModel = new ArrayList<TreeNode>();
|
||||
if (absTree != null) {
|
||||
List<TreeNode> nodes = new ArrayList<TreeNode>();
|
||||
if (absTree instanceof OutputXmlTree) {
|
||||
nodes.addAll(((OutputXmlTree) absTree).getNodes());
|
||||
} else {
|
||||
nodes.addAll(((InputXmlTree) absTree).getNodes());
|
||||
}
|
||||
for (TreeNode node : nodes) {
|
||||
if (XmlMapUtil.DOCUMENT.equals(node.getType())) {
|
||||
tableModel.addAll(SchemaTableUtils.getTreeSchemaEnties(node));
|
||||
}
|
||||
}
|
||||
}
|
||||
return tableModel;
|
||||
}
|
||||
|
||||
public void changePageIfNeeded(TreeNode firstSelection) {
|
||||
List<TreeNode> updatedList = getSelectedInputTreeSchemaModel();
|
||||
// update page
|
||||
if (updatedList.contains(firstSelection)) {
|
||||
List<TreeNode> beansList = getBeansList();
|
||||
List<TreeNode> copyToRemove = new ArrayList<TreeNode>(beansList);
|
||||
copyToRemove.removeAll(updatedList);
|
||||
if (!copyToRemove.isEmpty()) {
|
||||
removeAll(copyToRemove);
|
||||
}
|
||||
// check if any new node is added
|
||||
for (int i = 0; i < updatedList.size(); i++) {
|
||||
if (!beansList.contains(updatedList.get(i))) {
|
||||
add(updatedList.get(i), i);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// change page
|
||||
List<TreeNode> allBeanList = getAllBeanList();
|
||||
int indexOf = allBeanList.indexOf(firstSelection);
|
||||
if (indexOf != -1) {
|
||||
currentPage = indexOf == 0 ? 1 : (indexOf / maxColumns + (indexOf % maxColumns == 0 ? 0 : 1));
|
||||
}
|
||||
removeAll();
|
||||
addAll(getSelectedInputTreeSchemaModel());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
public void beanListModified() {
|
||||
List<TreeNode> beansList = getBeansList();
|
||||
List<TreeNode> copyToRemove = new ArrayList<TreeNode>(beansList);
|
||||
List<TreeNode> updatedList = getSelectedInputTreeSchemaModel();
|
||||
copyToRemove.removeAll(updatedList);
|
||||
if (!copyToRemove.isEmpty()) {
|
||||
removeAll(copyToRemove);
|
||||
}
|
||||
// check if any new node is added
|
||||
for (int i = 0; i < updatedList.size(); i++) {
|
||||
if (!beansList.contains(updatedList.get(i))) {
|
||||
add(updatedList.get(i), i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.talend.commons.ui.swt.extended.table.AbstractExtendedControlModel#getName()
|
||||
*/
|
||||
@Override
|
||||
public String getName() {
|
||||
return absTree.getName();
|
||||
}
|
||||
|
||||
public AbstractInOutTree getXmlTree() {
|
||||
return absTree;
|
||||
}
|
||||
|
||||
public void setMaxColumns(int maxColumns) {
|
||||
this.maxColumns = maxColumns;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the currentPage.
|
||||
*
|
||||
* @param currentPage the currentPage to set
|
||||
*/
|
||||
public void setCurrentPage(int page) {
|
||||
int newPage = page;
|
||||
if (newPage < 1) {
|
||||
newPage = 1;
|
||||
}
|
||||
if (newPage > pageCount) {
|
||||
newPage = pageCount;
|
||||
}
|
||||
if (this.currentPage != newPage) {
|
||||
this.currentPage = newPage;
|
||||
removeAll();
|
||||
addAll(getSelectedInputTreeSchemaModel());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for currentPage.
|
||||
*
|
||||
* @return the currentPage
|
||||
*/
|
||||
public int getCurrentPage() {
|
||||
return this.currentPage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for pageCount.
|
||||
*
|
||||
* @return the pageCount
|
||||
*/
|
||||
public int getPageCount() {
|
||||
return this.pageCount;
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,6 @@ import org.eclipse.swt.widgets.Display;
|
||||
import org.eclipse.swt.widgets.Table;
|
||||
import org.talend.commons.ui.runtime.image.EImage;
|
||||
import org.talend.commons.ui.runtime.image.ImageProvider;
|
||||
import org.talend.commons.ui.swt.extended.table.ExtendedTableModel;
|
||||
import org.talend.commons.ui.swt.proposal.ContentProposalAdapterExtended;
|
||||
import org.talend.commons.ui.swt.proposal.TextCellEditorWithProposal;
|
||||
import org.talend.commons.ui.swt.tableviewer.CellEditorValueAdapterFactory;
|
||||
@@ -38,6 +37,7 @@ import org.talend.commons.ui.swt.tableviewer.tableeditor.CheckboxTableEditorCont
|
||||
import org.talend.commons.utils.data.bean.IBeanPropertyAccessors;
|
||||
import org.talend.core.model.metadata.types.JavaTypesManager;
|
||||
import org.talend.core.ui.proposal.JavaSimpleDateFormatProposalProvider;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode;
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.XmlMapData;
|
||||
import org.talend.designer.xmlmap.ui.expressionutil.XmlMapExpressionManager;
|
||||
import org.talend.designer.xmlmap.util.XmlMapUtil;
|
||||
@@ -59,24 +59,26 @@ public class XmlTreeSchemaTableView extends AbstractXmlTreeSchemaTableView {
|
||||
|
||||
public static final Color READONLY_CELL_BG_COLOR = Display.getCurrent().getSystemColor(SWT.COLOR_GRAY);
|
||||
|
||||
public XmlTreeSchemaTableView(ExtendedTableModel<TreeSchemaTableEntry> extendedTableModel, Composite parent) {
|
||||
super(extendedTableModel, parent, false, false);
|
||||
public XmlTreeSchemaTableView(Composite parentComposite, int mainCompositeStyle) {
|
||||
super(parentComposite, mainCompositeStyle);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createColumns(final TableViewerCreator<TreeSchemaTableEntry> tableViewerCreator, Table table) {
|
||||
protected void createColumns(final TableViewerCreator<TreeNode> tableViewerCreator, Table table) {
|
||||
TableViewerCreatorColumn column = new TableViewerCreatorColumn(tableViewerCreator);
|
||||
column.setTitle("XPath");
|
||||
column.setId(ID_COLUMN_XPATH);
|
||||
column.setWeight(20);
|
||||
column.setModifiable(true);
|
||||
column.setBeanPropertyAccessors(new IBeanPropertyAccessors<TreeSchemaTableEntry, Object>() {
|
||||
column.setBeanPropertyAccessors(new IBeanPropertyAccessors<TreeNode, Object>() {
|
||||
|
||||
public Object get(TreeSchemaTableEntry bean) {
|
||||
return bean.getXPath();
|
||||
@Override
|
||||
public Object get(TreeNode bean) {
|
||||
return bean.getXpath();
|
||||
}
|
||||
|
||||
public void set(TreeSchemaTableEntry bean, Object value) {
|
||||
@Override
|
||||
public void set(TreeNode bean, Object value) {
|
||||
if (isValidName) {
|
||||
bean.setName((String) value);
|
||||
// String xPath = bean.getXPath();
|
||||
@@ -91,11 +93,11 @@ public class XmlTreeSchemaTableView extends AbstractXmlTreeSchemaTableView {
|
||||
// typedValue = xPath + bean.getName();
|
||||
// }
|
||||
// bean.setXPath(typedValue);
|
||||
XmlMapData mapperData = XmlMapUtil.getXmlMapData(bean.getTreeNode());
|
||||
XmlMapData mapperData = XmlMapUtil.getXmlMapData(bean);
|
||||
XmlMapExpressionManager expressionManager = new XmlMapExpressionManager();
|
||||
XmlMapUtil.updateXPathAndExpression(mapperData, expressionManager, bean.getTreeNode(), bean.getName(),
|
||||
XmlMapUtil.getXPathLength(bean.getXPath()), true);
|
||||
if (!bean.getTreeNode().getChildren().isEmpty()) {
|
||||
XmlMapUtil.updateXPathAndExpression(mapperData, expressionManager, bean, bean.getName(),
|
||||
XmlMapUtil.getXPathLength(bean.getXpath()), true);
|
||||
if (!bean.getChildren().isEmpty()) {
|
||||
refresh();
|
||||
}
|
||||
}
|
||||
@@ -119,7 +121,7 @@ public class XmlTreeSchemaTableView extends AbstractXmlTreeSchemaTableView {
|
||||
|
||||
@Override
|
||||
public Object getValue(Object bean) {
|
||||
TreeSchemaTableEntry entry = (TreeSchemaTableEntry) bean;
|
||||
TreeNode entry = (TreeNode) bean;
|
||||
return entry.getName();
|
||||
}
|
||||
|
||||
@@ -138,13 +140,15 @@ public class XmlTreeSchemaTableView extends AbstractXmlTreeSchemaTableView {
|
||||
column.setModifiable(true);
|
||||
CheckboxTableEditorContent checkbox = new CheckboxTableEditorContent();
|
||||
column.setTableEditorContent(checkbox);
|
||||
column.setBeanPropertyAccessors(new IBeanPropertyAccessors<TreeSchemaTableEntry, Boolean>() {
|
||||
column.setBeanPropertyAccessors(new IBeanPropertyAccessors<TreeNode, Boolean>() {
|
||||
|
||||
public Boolean get(TreeSchemaTableEntry bean) {
|
||||
@Override
|
||||
public Boolean get(TreeNode bean) {
|
||||
return bean.isKey();
|
||||
}
|
||||
|
||||
public void set(TreeSchemaTableEntry bean, Boolean value) {
|
||||
@Override
|
||||
public void set(TreeNode bean, Boolean value) {
|
||||
bean.setKey(value);
|
||||
}
|
||||
});
|
||||
@@ -157,7 +161,7 @@ public class XmlTreeSchemaTableView extends AbstractXmlTreeSchemaTableView {
|
||||
column.setModifiable(true);
|
||||
column.setWeight(20);
|
||||
|
||||
TreeSchemaJavaTypeComboValueAdapter comboValueAdapter = new TreeSchemaJavaTypeComboValueAdapter<TreeSchemaTableEntry>(
|
||||
TreeSchemaJavaTypeComboValueAdapter comboValueAdapter = new TreeSchemaJavaTypeComboValueAdapter<TreeNode>(
|
||||
JavaTypesManager.getDefaultJavaType(), getNullableAccessor());
|
||||
|
||||
ComboBoxCellEditor typeComboEditor = new ComboBoxCellEditor(tableViewerCreator.getTable(),
|
||||
@@ -183,18 +187,21 @@ public class XmlTreeSchemaTableView extends AbstractXmlTreeSchemaTableView {
|
||||
column.setTitle("Pattern");
|
||||
column.setId(ID_COLUMN_PATTERN);
|
||||
column.setWeight(20);
|
||||
column.setBeanPropertyAccessors(new IBeanPropertyAccessors<TreeSchemaTableEntry, String>() {
|
||||
column.setBeanPropertyAccessors(new IBeanPropertyAccessors<TreeNode, String>() {
|
||||
|
||||
public String get(TreeSchemaTableEntry bean) {
|
||||
@Override
|
||||
public String get(TreeNode bean) {
|
||||
return bean.getPattern();
|
||||
}
|
||||
|
||||
public void set(TreeSchemaTableEntry bean, String value) {
|
||||
@Override
|
||||
public void set(TreeNode bean, String value) {
|
||||
bean.setPattern(value);
|
||||
}
|
||||
});
|
||||
final ColumnCellModifier columnCellModifier = new ColumnCellModifier(column) {
|
||||
|
||||
@Override
|
||||
public boolean canModify(Object bean) {
|
||||
boolean typeIsDate = currentBeanHasJavaDateType(bean) && !isReadOnly();
|
||||
return typeIsDate;
|
||||
@@ -203,6 +210,7 @@ public class XmlTreeSchemaTableView extends AbstractXmlTreeSchemaTableView {
|
||||
};
|
||||
column.setColorProvider(new IColumnColorProvider() {
|
||||
|
||||
@Override
|
||||
public Color getBackgroundColor(Object bean) {
|
||||
if (!columnCellModifier.canModify(bean)) {
|
||||
return READONLY_CELL_BG_COLOR;
|
||||
@@ -210,6 +218,7 @@ public class XmlTreeSchemaTableView extends AbstractXmlTreeSchemaTableView {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Color getForegroundColor(Object bean) {
|
||||
return null;
|
||||
}
|
||||
@@ -222,6 +231,7 @@ public class XmlTreeSchemaTableView extends AbstractXmlTreeSchemaTableView {
|
||||
*
|
||||
* @see org.talend.commons.ui.swt.tableviewer.behavior.IColumnLabelProvider#getLabel(java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public String getLabel(Object bean) {
|
||||
if (!currentBeanHasJavaDateType(bean)) {
|
||||
return ""; //$NON-NLS-1$
|
||||
@@ -243,19 +253,21 @@ public class XmlTreeSchemaTableView extends AbstractXmlTreeSchemaTableView {
|
||||
}
|
||||
|
||||
private boolean currentBeanHasJavaDateType(Object element) {
|
||||
String talendType = getTalendTypeAccessor().get((TreeSchemaTableEntry) element);
|
||||
String talendType = getTalendTypeAccessor().get((TreeNode) element);
|
||||
boolean typeIsDate = JavaTypesManager.DATE.getId().equals(talendType);
|
||||
return typeIsDate;
|
||||
}
|
||||
|
||||
private IBeanPropertyAccessors<TreeSchemaTableEntry, String> getTalendTypeAccessor() {
|
||||
return new IBeanPropertyAccessors<TreeSchemaTableEntry, String>() {
|
||||
private IBeanPropertyAccessors<TreeNode, String> getTalendTypeAccessor() {
|
||||
return new IBeanPropertyAccessors<TreeNode, String>() {
|
||||
|
||||
public String get(TreeSchemaTableEntry bean) {
|
||||
@Override
|
||||
public String get(TreeNode bean) {
|
||||
return bean.getType();
|
||||
}
|
||||
|
||||
public void set(TreeSchemaTableEntry bean, String value) {
|
||||
@Override
|
||||
public void set(TreeNode bean, String value) {
|
||||
bean.setType(value);
|
||||
if (currentBeanHasJavaDateType(bean)) {
|
||||
bean.setPattern(new JavaSimpleDateFormatProposalProvider().getProposals(null, 0)[0].getContent());
|
||||
@@ -264,14 +276,16 @@ public class XmlTreeSchemaTableView extends AbstractXmlTreeSchemaTableView {
|
||||
};
|
||||
}
|
||||
|
||||
private IBeanPropertyAccessors<TreeSchemaTableEntry, Boolean> getNullableAccessor() {
|
||||
return new IBeanPropertyAccessors<TreeSchemaTableEntry, Boolean>() {
|
||||
private IBeanPropertyAccessors<TreeNode, Boolean> getNullableAccessor() {
|
||||
return new IBeanPropertyAccessors<TreeNode, Boolean>() {
|
||||
|
||||
public Boolean get(TreeSchemaTableEntry bean) {
|
||||
@Override
|
||||
public Boolean get(TreeNode bean) {
|
||||
return bean.isNullable();
|
||||
}
|
||||
|
||||
public void set(TreeSchemaTableEntry bean, Boolean value) {
|
||||
@Override
|
||||
public void set(TreeNode bean, Boolean value) {
|
||||
bean.setNullable(value);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2012 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.designer.xmlmap.ui.tabs.table.toolbar;
|
||||
|
||||
import org.eclipse.gef.commands.Command;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.talend.commons.ui.runtime.image.EImage;
|
||||
import org.talend.commons.ui.runtime.image.ImageProvider;
|
||||
import org.talend.commons.ui.swt.advanced.dataeditor.control.ExtendedPushButton;
|
||||
import org.talend.commons.ui.swt.extended.table.AbstractExtendedControlViewer;
|
||||
import org.talend.commons.ui.swt.extended.table.AbstractExtendedTableViewer;
|
||||
import org.talend.designer.xmlmap.ui.tabs.table.TreeSchemaTableEditor;
|
||||
|
||||
/**
|
||||
* created by Administrator on 2013-1-25 Detailled comment
|
||||
*
|
||||
*/
|
||||
public class NextPageButton extends ExtendedPushButton {
|
||||
|
||||
/**
|
||||
* DOC Administrator NextPageButton constructor comment.
|
||||
*
|
||||
* @param parent
|
||||
* @param extendedViewer
|
||||
* @param tooltip
|
||||
* @param image
|
||||
*/
|
||||
public NextPageButton(Composite parent, AbstractExtendedControlViewer extendedViewer) {
|
||||
super(parent, extendedViewer, "Next Page", ImageProvider.getImage(EImage.RIGHTX_ICON));
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.talend.commons.ui.swt.advanced.dataeditor.control.ExtendedPushButton#getCommandToExecute()
|
||||
*/
|
||||
@Override
|
||||
protected Command getCommandToExecute() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractExtendedTableViewer getExtendedControlViewer() {
|
||||
return (AbstractExtendedTableViewer) super.getExtendedControlViewer();
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.talend.commons.ui.swt.advanced.dataeditor.control.ExtendedPushButton#handleSelectionEvent(org.eclipse.swt
|
||||
* .widgets.Event)
|
||||
*/
|
||||
@Override
|
||||
protected void handleSelectionEvent(Event event) {
|
||||
TreeSchemaTableEditor extendedControlModel = (TreeSchemaTableEditor) getExtendedControlViewer().getExtendedControlModel();
|
||||
// avoid the selection event ,or it will be slow
|
||||
getExtendedControlViewer().getTableViewerCreator().getSelectionHelper().setActiveFireSelectionChanged(false);
|
||||
extendedControlModel.setCurrentPage(extendedControlModel.getCurrentPage() + 1);
|
||||
getExtendedControlViewer().getTableViewerCreator().getSelectionHelper().setActiveFireSelectionChanged(true);
|
||||
// only select the first column if change page
|
||||
getExtendedControlViewer().getTableViewerCreator().getSelectionHelper().setSelection(new int[] { 0 });
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.talend.commons.ui.swt.advanced.dataeditor.control.ExtendedPushButton#getEnabledState()
|
||||
*/
|
||||
@Override
|
||||
public boolean getEnabledState() {
|
||||
TreeSchemaTableEditor extendedControlModel = (TreeSchemaTableEditor) getExtendedControlViewer().getExtendedControlModel();
|
||||
if (extendedControlModel == null) {
|
||||
return false;
|
||||
}
|
||||
if (extendedControlModel.getPageCount() < 2) {
|
||||
getButton().setVisible(false);
|
||||
} else {
|
||||
getButton().setVisible(true);
|
||||
}
|
||||
if (extendedControlModel != null && extendedControlModel.getCurrentPage() < extendedControlModel.getPageCount()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleModelChange() {
|
||||
super.handleModelChange();
|
||||
TreeSchemaTableEditor extendedControlModel = (TreeSchemaTableEditor) getExtendedControlViewer().getExtendedControlModel();
|
||||
if (extendedControlModel.getPageCount() < 2) {
|
||||
getButton().setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2012 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.designer.xmlmap.ui.tabs.table.toolbar;
|
||||
|
||||
import org.eclipse.gef.commands.Command;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.talend.commons.ui.runtime.image.EImage;
|
||||
import org.talend.commons.ui.runtime.image.ImageProvider;
|
||||
import org.talend.commons.ui.swt.advanced.dataeditor.control.ExtendedPushButton;
|
||||
import org.talend.commons.ui.swt.extended.table.AbstractExtendedTableViewer;
|
||||
import org.talend.designer.xmlmap.ui.tabs.table.TreeSchemaTableEditor;
|
||||
|
||||
/**
|
||||
* created by Administrator on 2013-1-25 Detailled comment
|
||||
*
|
||||
*/
|
||||
public class PreviousPageButton extends ExtendedPushButton {
|
||||
|
||||
/**
|
||||
* DOC Administrator PreviousPageButton constructor comment.
|
||||
*
|
||||
* @param parent
|
||||
* @param extendedViewer
|
||||
* @param tooltip
|
||||
* @param image
|
||||
*/
|
||||
public PreviousPageButton(Composite parent, AbstractExtendedTableViewer extendedViewer) {
|
||||
super(parent, extendedViewer, "Previous Page", ImageProvider.getImage(EImage.LEFTX_ICON));
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Command getCommandToExecute() {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractExtendedTableViewer getExtendedControlViewer() {
|
||||
return (AbstractExtendedTableViewer) super.getExtendedControlViewer();
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.talend.commons.ui.swt.advanced.dataeditor.control.ExtendedPushButton#handleSelectionEvent(org.eclipse.swt
|
||||
* .widgets.Event)
|
||||
*/
|
||||
@Override
|
||||
protected void handleSelectionEvent(Event event) {
|
||||
TreeSchemaTableEditor extendedControlModel = (TreeSchemaTableEditor) getExtendedControlViewer().getExtendedControlModel();
|
||||
// avoid the selection event ,or it will be slow
|
||||
getExtendedControlViewer().getTableViewerCreator().getSelectionHelper().setActiveFireSelectionChanged(false);
|
||||
extendedControlModel.setCurrentPage(extendedControlModel.getCurrentPage() - 1);
|
||||
getExtendedControlViewer().getTableViewerCreator().getSelectionHelper().setActiveFireSelectionChanged(true);
|
||||
// only select the first column if change page
|
||||
getExtendedControlViewer().getTableViewerCreator().getSelectionHelper().setSelection(new int[] { 0 });
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.talend.commons.ui.swt.advanced.dataeditor.control.ExtendedPushButton#getEnabledState()
|
||||
*/
|
||||
@Override
|
||||
public boolean getEnabledState() {
|
||||
TreeSchemaTableEditor extendedControlModel = (TreeSchemaTableEditor) getExtendedControlViewer().getExtendedControlModel();
|
||||
if (extendedControlModel == null) {
|
||||
return false;
|
||||
}
|
||||
if (extendedControlModel.getPageCount() < 2) {
|
||||
getButton().setVisible(false);
|
||||
} else {
|
||||
getButton().setVisible(true);
|
||||
}
|
||||
if (extendedControlModel != null && extendedControlModel.getCurrentPage() > 1) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.talend.commons.ui.swt.advanced.dataeditor.control.ExtendedPushButton#handleModelChange()
|
||||
*/
|
||||
@Override
|
||||
protected void handleModelChange() {
|
||||
super.handleModelChange();
|
||||
TreeSchemaTableEditor extendedControlModel = (TreeSchemaTableEditor) getExtendedControlViewer().getExtendedControlModel();
|
||||
if (extendedControlModel.getPageCount() < 2) {
|
||||
getButton().setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2012 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.designer.xmlmap.ui.tabs.table.toolbar;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.talend.commons.ui.swt.advanced.dataeditor.ExtendedToolbarView;
|
||||
import org.talend.commons.ui.swt.advanced.dataeditor.control.ExtendedPushButton;
|
||||
import org.talend.commons.ui.swt.extended.table.AbstractExtendedTableViewer;
|
||||
|
||||
/**
|
||||
* created by Administrator on 2013-1-25 Detailled comment
|
||||
*
|
||||
*/
|
||||
public class XmlMapExtendedToolbarView extends ExtendedToolbarView {
|
||||
|
||||
private PreviousPageButton previousButton;
|
||||
|
||||
private NextPageButton nextButton;
|
||||
|
||||
/**
|
||||
* DOC Administrator XmlMapExtendedToolbarView constructor comment.
|
||||
*
|
||||
* @param parent
|
||||
* @param style
|
||||
* @param extendedTableViewer
|
||||
*/
|
||||
public XmlMapExtendedToolbarView(Composite parent, int style, AbstractExtendedTableViewer extendedTableViewer) {
|
||||
super(parent, style, extendedTableViewer);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.talend.commons.ui.swt.advanced.dataeditor.ExtendedToolbarView#createComponents(org.eclipse.swt.widgets.Composite
|
||||
* )
|
||||
*/
|
||||
@Override
|
||||
protected void createComponents(Composite parent) {
|
||||
previousButton = new PreviousPageButton(parent, getExtendedTableViewer());
|
||||
nextButton = new NextPageButton(parent, getExtendedTableViewer());
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.talend.commons.ui.swt.advanced.dataeditor.ExtendedToolbarView#getButtons()
|
||||
*/
|
||||
@Override
|
||||
public List<ExtendedPushButton> getButtons() {
|
||||
List<ExtendedPushButton> buttons = new ArrayList<ExtendedPushButton>();
|
||||
buttons.add(previousButton);
|
||||
buttons.add(nextButton);
|
||||
return buttons;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2012 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.designer.xmlmap.ui.tabs.table.utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode;
|
||||
|
||||
/**
|
||||
* created by Administrator on 2013-1-28 Detailled comment
|
||||
*
|
||||
*/
|
||||
public class SchemaTableUtils {
|
||||
|
||||
public static List<TreeNode> getTreeSchemaEnties(TreeNode docNode) {
|
||||
List<TreeNode> tableModel = new ArrayList<TreeNode>();
|
||||
for (TreeNode node : docNode.getChildren()) {
|
||||
// avoid to edit choice and subs in schema editor
|
||||
if (!node.isChoice() && !node.isSubstitution()) {
|
||||
tableModel.add(node);
|
||||
}
|
||||
if (!node.getChildren().isEmpty()) {
|
||||
tableModel.addAll(getTreeSchemaEnties(node));
|
||||
}
|
||||
}
|
||||
return tableModel;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user