diff options
Diffstat (limited to 'jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider')
10 files changed, 0 insertions, 2058 deletions
diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/AddEntityContext.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/AddEntityContext.java deleted file mode 100644 index 4974d9aa02..0000000000 --- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/AddEntityContext.java +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************* - * <copyright> - * - * Copyright (c) 2005, 2010 SAP AG. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Petya Sabeva - initial API, implementation and documentation - * - * </copyright> - * - *******************************************************************************/ -package org.eclipse.jpt.jpadiagrameditor.ui.internal.provider; - -import org.eclipse.graphiti.features.context.impl.AddContext; - -public class AddEntityContext extends AddContext implements IAddEntityContext{ - private boolean primaryCollapsed; - private boolean relationCollapsed; - private boolean basicCollapsed; - - public boolean isPrimaryCollapsed() { - return primaryCollapsed; - } - public void setPrimaryCollapsed(boolean primaryCollapsed) { - this.primaryCollapsed = primaryCollapsed; - } - - public boolean isRelationCollapsed() { - return relationCollapsed; - } - public void setRelationCollapsed(boolean relationCollapsed) { - this.relationCollapsed = relationCollapsed; - } - - public AddEntityContext(boolean primaryCollapsed, - boolean relationCollapsed, boolean basicCollapsed) { - super(); - this.primaryCollapsed = primaryCollapsed; - this.relationCollapsed = relationCollapsed; - this.basicCollapsed = basicCollapsed; - } - - public boolean isBasicCollapsed() { - return basicCollapsed; - } - public void setBasicCollapsed(boolean basicCollapsed) { - this.basicCollapsed = basicCollapsed; - } - -} diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/IAddEntityContext.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/IAddEntityContext.java deleted file mode 100644 index c6d17c51a5..0000000000 --- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/IAddEntityContext.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * <copyright> - * - * Copyright (c) 2005, 2010 SAP AG. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Petya Sabeva - initial API, implementation and documentation - * - * </copyright> - * - *******************************************************************************/ -package org.eclipse.jpt.jpadiagrameditor.ui.internal.provider; - -public interface IAddEntityContext { - - public abstract boolean isPrimaryCollapsed(); - - public abstract boolean isRelationCollapsed(); - - public abstract boolean isBasicCollapsed(); - -}
\ No newline at end of file diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/IJPAEditorFeatureProvider.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/IJPAEditorFeatureProvider.java deleted file mode 100644 index 995bbc2bdb..0000000000 --- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/IJPAEditorFeatureProvider.java +++ /dev/null @@ -1,102 +0,0 @@ -/******************************************************************************* - * <copyright> - * - * Copyright (c) 2005, 2010 SAP AG. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Stefan Dimov - initial API, implementation and documentation - * - * </copyright> - * - *******************************************************************************/ -package org.eclipse.jpt.jpadiagrameditor.ui.internal.provider; - -import java.util.Properties; - -import org.eclipse.core.resources.IProject; -import org.eclipse.emf.transaction.TransactionalEditingDomain; -import org.eclipse.graphiti.features.IDeleteFeature; -import org.eclipse.graphiti.features.IFeatureProvider; -import org.eclipse.graphiti.features.context.IDeleteContext; -import org.eclipse.graphiti.features.custom.ICustomFeature; -import org.eclipse.graphiti.mm.pictograms.Shape; -import org.eclipse.jdt.core.ICompilationUnit; -import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.modelintegration.util.IModelIntegrationUtil; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.relations.IRelation; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.relations.IRelation.RelDir; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.relations.IRelation.RelType; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.IGraphicsUpdater; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.IJPAEditorUtil; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.IPeServiceUtil; - - -public interface IJPAEditorFeatureProvider extends IFeatureProvider{ - - public ICompilationUnit getCompilationUnit(JavaPersistentType jpt); - - public boolean hasObjectWithName(String name); - - public String getKeyForBusinessObject(Object bo); - - public Object remove(String key); - - public Object remove(String key, boolean save); - - public IRelation getRelationRelatedToAttribute(JavaPersistentAttribute jpa); - - public boolean existsRelation(JavaPersistentType jpt1, JavaPersistentType jpt2); - - public Object getBusinessObjectForKey(String key); - - public void addJPTForUpdate(String jptName); - - public boolean doesRelationExist(JavaPersistentType owner, - JavaPersistentType inverse, - String ownerAttributeName, - RelType relType, - RelDir relDir); - - public void restoreEntity(JavaPersistentType jpt); - - public void addRemoveIgnore(JavaPersistentType jpt, String atName); - - public void addAddIgnore(JavaPersistentType jpt, String atName); - - public void putKeyToBusinessObject(String key, Object bo); - - public int getAttribsNum(Shape sh); - - public int increaseAttribsNum(Shape sh); - - public int decreaseAttribsNum(Shape sh); - - public void replaceAttribute(JavaPersistentAttribute oldAt, JavaPersistentAttribute newAt); - - public void renewAttributeJoiningStrategyPropertyListener(JavaPersistentAttribute jpa); - - public IPeServiceUtil getPeUtil(); - - public IJPAEditorUtil getJPAEditorUtil(); - - public IDeleteFeature getDeleteFeature(IDeleteContext context); - - public ICustomFeature getAddAllEntitiesFeature(); - - public IModelIntegrationUtil getMoinIntegrationUtil(); - - public IGraphicsUpdater getGraphicsUpdater(); - - public void addAttribForUpdate(PersistenceUnit pu, String entAtMappedBy); - - public TransactionalEditingDomain getTransactionalEditingDomain(); - - public Properties loadProperties(IProject project); - -}
\ No newline at end of file diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/IJPAEditorImageCreator.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/IJPAEditorImageCreator.java deleted file mode 100644 index 625d575b27..0000000000 --- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/IJPAEditorImageCreator.java +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************************* - * <copyright> - * - * Copyright (c) 2005, 2010 SAP AG. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Kiril Mitov - initial API, implementation and documentation - * - * </copyright> - * - *******************************************************************************/ -package org.eclipse.jpt.jpadiagrameditor.ui.internal.provider; - -import org.eclipse.graphiti.mm.algorithms.Polyline; -import org.eclipse.graphiti.mm.pictograms.Connection; -import org.eclipse.graphiti.mm.pictograms.ConnectionDecorator; -import org.eclipse.graphiti.mm.pictograms.Diagram; - -public interface IJPAEditorImageCreator { - - static public enum RelEndDir { - UP, - LEFT, - RIGHT, - DOWN - } - - public Polyline createConnectionLine(Diagram d, Connection connection); - - //public ConnectionDecorator createTextConnectionDecorator(Connection connection, String text, double location); - - public ConnectionDecorator createArrowConnectionDecorator(Connection connection, double location); - - public ConnectionDecorator createManyEndWithArrowDecorator(Connection connection, double location); - - public ConnectionDecorator createManyStartDecorator(Connection connection, double location); - - public ConnectionDecorator createManyEndDecorator(Connection connection, double location); - - public ConnectionDecorator createIconConnectionDecorator(Connection connection, String iconId, double location); - - public ConnectionDecorator createCardinalityConnectionDecorator(Diagram d, Connection c, String text, double location); - - -} diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorContextMenuProvider.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorContextMenuProvider.java deleted file mode 100644 index 3b15f9ba17..0000000000 --- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorContextMenuProvider.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * <copyright> - * - * Copyright (c) 2005, 2010 SAP AG. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Stefan Dimov - initial API, implementation and documentation - * - * </copyright> - * - *******************************************************************************/ -package org.eclipse.jpt.jpadiagrameditor.ui.internal.provider; - -import org.eclipse.gef.EditPartViewer; -import org.eclipse.gef.ui.actions.ActionRegistry; -import org.eclipse.graphiti.ui.editor.DiagramEditorContextMenuProvider; -import org.eclipse.graphiti.ui.internal.config.IConfigurationProvider; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.swt.graphics.Point; - -@SuppressWarnings("restriction") -public class JPAEditorContextMenuProvider extends DiagramEditorContextMenuProvider { - public JPAEditorContextMenuProvider(EditPartViewer viewer, - ActionRegistry registry, - IConfigurationProvider configurationProvider) { - super(viewer, registry, configurationProvider); - } - - - protected void addDefaultMenuGroupEdit(IMenuManager manager, Point menuLocation) { - } - - protected void addActionToMenuIfAvailable(IMenuManager manager, String actionId, String menuGroup) { - if (actionId.equals("predefined remove action") || //$NON-NLS-1$ - actionId.equals("predefined update action")) //$NON-NLS-1$ - return; - super.addActionToMenuIfAvailable(manager, actionId, menuGroup); - } - - -} diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorDiagramTypeProvider.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorDiagramTypeProvider.java deleted file mode 100644 index d89265d328..0000000000 --- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorDiagramTypeProvider.java +++ /dev/null @@ -1,317 +0,0 @@ -/******************************************************************************* - * <copyright> - * - * Copyright (c) 2005, 2011 SAP AG. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Stefan Dimov - initial API, implementation and documentation - * - * </copyright> - * - *******************************************************************************/ -package org.eclipse.jpt.jpadiagrameditor.ui.internal.provider; - -import java.util.Collection; -import java.util.Enumeration; -import java.util.HashSet; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.emf.transaction.RecordingCommand; -import org.eclipse.emf.transaction.TransactionalEditingDomain; -import org.eclipse.emf.transaction.util.TransactionUtil; -import org.eclipse.graphiti.dt.AbstractDiagramTypeProvider; -import org.eclipse.graphiti.features.IFeatureProvider; -import org.eclipse.graphiti.features.context.impl.AddContext; -import org.eclipse.graphiti.features.context.impl.CustomContext; -import org.eclipse.graphiti.features.context.impl.RemoveContext; -import org.eclipse.graphiti.mm.pictograms.Connection; -import org.eclipse.graphiti.mm.pictograms.Diagram; -import org.eclipse.graphiti.mm.pictograms.PictogramElement; -import org.eclipse.graphiti.mm.pictograms.Shape; -import org.eclipse.graphiti.platform.IDiagramEditor; -import org.eclipse.graphiti.services.Graphiti; -import org.eclipse.graphiti.tb.IToolBehaviorProvider; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jpt.jpa.core.JpaProject; -import org.eclipse.jpt.jpa.core.MappingKeys; -import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType; -import org.eclipse.jpt.jpa.core.context.persistence.ClassRef; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.JPADiagramEditor; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.facade.EclipseFacade; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.AddAllEntitiesFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.AddJPAEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.RemoveRelationFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.i18n.JPAEditorMessages; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.modelintegration.util.ModelIntegrationUtil; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.EntitiesCoordinatesXML; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPACheckSum; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorConstants; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPASolver; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JpaArtifactFactory; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.SizePosition; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.SWT; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PlatformUI; - - -public class JPAEditorDiagramTypeProvider extends AbstractDiagramTypeProvider { - - private IToolBehaviorProvider[] toolBehaviorProviders; - public final static String ID = "org.eclipse.jpt.jpadiagrameditor.ui.provider.JPAEditorDiagramTypeProvider"; //$NON-NLS-1$ - boolean isDisposed = false; - boolean readOnly = false; - - public JPAEditorDiagramTypeProvider() { - IFeatureProvider fp = new JPAEditorFeatureProvider(this, new JPASolver()); - setFeatureProvider(fp); - } - - @Override - public void init(Diagram diagram, IDiagramEditor diagramEditor) { - super.init(diagram, diagramEditor); - if (getTargetJPAProject() == null) - closeEditor(); - JPAEditorDiagramTypeProvider provider = ModelIntegrationUtil.getProviderByDiagram(diagram.getName()); - if ((provider != null) && provider.isAlive()) - provider.getDiagramEditor().getSite().getWorkbenchWindow().getActivePage().closeEditor(provider.getDiagramEditor(), true); - } - - - @Override - public IToolBehaviorProvider[] getAvailableToolBehaviorProviders() { - if (toolBehaviorProviders == null) { - toolBehaviorProviders = - new IToolBehaviorProvider[] { new JPAEditorToolBehaviorProvider(this, EclipseFacade.INSTANCE) }; - } - return toolBehaviorProviders; - } - - @Override - public JPAEditorFeatureProvider getFeatureProvider() { - return (JPAEditorFeatureProvider)super.getFeatureProvider(); - } - - @SuppressWarnings("restriction") - public boolean hasToAdd() { - JpaProject project = getTargetJPAProject(); - PersistenceUnit unit = project.getRootContextNode().getPersistenceXml(). - getPersistence().getPersistenceUnits().iterator().next(); - - for (ClassRef classRef : unit.getClassRefs()) { - if (classRef.getJavaPersistentType() != null) { - JavaPersistentType jpt = classRef.getJavaPersistentType(); - if (jpt.getMappingKey() == MappingKeys.ENTITY_TYPE_MAPPING_KEY) { - PictogramElement pe = getFeatureProvider().getPictogramElementForBusinessObject(jpt); - if (pe == null) - return true; - } - } - } - return false; - } - - - @Override - public void postInit() { - final String jptName = getDiagramEditor().getPartProperty(JPAEditorConstants.OPEN_WHOLE_PERSISTENCE_UNIT_EDITOR_PROPERTY); - if (jptName != null) { - boolean hasToAdd = hasToAdd(); - boolean readOnly = openPersistedDiagram(hasToAdd); - if (hasToAdd && !readOnly) - addRemainingEntities(); - } else - try { - openPersistedDiagram(false); - } catch (NullPointerException e) { - return; - } - } - - private void addRemainingEntities() { - final AddAllEntitiesFeature feature = new AddAllEntitiesFeature(getFeatureProvider()); - final CustomContext context = new CustomContext(); - TransactionalEditingDomain ted = ModelIntegrationUtil.getTransactionalEditingDomain(feature.getFeatureProvider().getDiagramTypeProvider().getDiagram()); - ted.getCommandStack().execute(new RecordingCommand(ted) { - @Override - protected void doExecute() { - feature.execute(context); - } - }); - } - - private void closeEditor() { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); - page.closeEditor(getDiagramEditor(), false); - } - }); - } - - private boolean openPersistedDiagram(boolean hasToAdd) { - final JpaProject proj = getTargetJPAProject(); - IProject project = proj.getProject(); - final Diagram diagram = getDiagram(); - ModelIntegrationUtil.putProjectToDiagram(project, diagram); - PersistenceUnit pu = JpaArtifactFactory.instance().getPersistenceUnit(proj); - String diagramName = pu.getName(); - IPath path = ModelIntegrationUtil.getDiagramsFolderPath(project).append(diagramName).addFileExtension(ModelIntegrationUtil.DIAGRAM_FILE_EXTENSION); - final IFile f = ResourcesPlugin.getWorkspace().getRoot().getFile(path); - boolean readOnly = (f != null) && f.exists() && f.isReadOnly(); - if (readOnly) { - if (JPACheckSum.INSTANCE().isModelDifferentFromDiagram(diagram, proj) || hasToAdd) { - String message = hasToAdd ? JPAEditorMessages.JPAEditorDiagramTypeProvider_JPADiagramReadOnlyHasToAddMsg : - JPAEditorMessages.JPAEditorDiagramTypeProvider_JPADiagramReadOnlyMsg; - MessageDialog dialog = new MessageDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), - JPAEditorMessages.JPAEditorDiagramTypeProvider_JPADiagramReadOnlyTitle, null, message, - MessageDialog.INFORMATION, new String[] {JPAEditorMessages.BTN_OK, JPAEditorMessages.BTN_CANCEL}, 0) { - @Override - protected int getShellStyle() { - return SWT.TITLE | SWT.BORDER - | SWT.APPLICATION_MODAL - | getDefaultOrientation(); - } - }; - if (dialog.open() == 1) { - closeEditor(); - return true; - } else { - IStatus stat = ResourcesPlugin.getWorkspace().validateEdit(new IFile[]{f}, null); - if (!stat.isOK()) { - message = NLS.bind(JPAEditorMessages.JPAEditorDiagramTypeProvider_cantMakeDiagramWritableMsg, - stat.getMessage());; - dialog = new MessageDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), - JPAEditorMessages.JPAEditorDiagramTypeProvider_cantMakeDiagramWritableTitle, null, message, - MessageDialog.CANCEL, new String[] {JPAEditorMessages.BTN_OK}, 0) { - @Override - protected int getShellStyle() { - return SWT.CLOSE | SWT.TITLE | SWT.BORDER - | SWT.APPLICATION_MODAL - | getDefaultOrientation(); - } - }; - dialog.open(); - closeEditor(); - return true; - } else { - readOnly = false; - } - } - } else { - return readOnly; - } - } - - removeConnections(); - - final Hashtable<String, SizePosition> marks = new Hashtable<String, SizePosition>(); - EntitiesCoordinatesXML xml = new EntitiesCoordinatesXML(project.getName()); - xml.load(marks); - xml.clean(); - - List<Shape> picts = diagram.getChildren(); - Iterator<Shape> it = picts.iterator(); - HashSet<Shape> toDelete = new HashSet<Shape>(); - // collecting data from the saved pictograms - while (it.hasNext()) { - Shape pict = it.next(); - toDelete.add(pict); - } - - final Iterator<Shape> iter = toDelete.iterator(); - - TransactionalEditingDomain ted = TransactionUtil.getEditingDomain(diagram); - ted.getCommandStack().execute(new RecordingCommand(ted) { - @Override - protected void doExecute() { - while (iter.hasNext()) - Graphiti.getPeService().deletePictogramElement(iter.next()); - Collection<Connection> cns = diagram.getConnections(); - Iterator<Connection> itera = cns.iterator(); - Set<Connection> toDel = new HashSet<Connection>(); - while (itera.hasNext()) - toDel.add(itera.next()); - itera = toDel.iterator(); - while (itera.hasNext()) - Graphiti.getPeService().deletePictogramElement(itera.next()); - - Enumeration<String> itr = marks.keys(); - - // create new pictograms - while (itr.hasMoreElements()) { - String entityName = itr.nextElement(); - JavaPersistentType jpt = JpaArtifactFactory.instance().getContextPersistentType(proj, entityName); - if (jpt != null) { - SizePosition sp = marks.get(entityName); - AddContext ctx = new AddEntityContext(sp.primaryCollapsed, - sp.relationCollapsed, sp.basicCollapsed); - ctx.setNewObject(jpt); - ctx.setTargetContainer(getDiagram()); - ctx.setWidth(sp.getWidth()); - ctx.setHeight(sp.getHeight()); - ctx.setX(sp.getX()); - ctx.setY(sp.getY()); - AddJPAEntityFeature ft = new AddJPAEntityFeature(getFeatureProvider()); - ft.add(ctx); - } - } - } - }); - getDiagramEditor().saveWithoutEntities(new NullProgressMonitor()); - - // delete old pictograms - return false; - } - - private void removeConnections() { - Collection<org.eclipse.graphiti.mm.pictograms.Connection> cons = getDiagram().getConnections(); - Iterator<org.eclipse.graphiti.mm.pictograms.Connection> consIt = cons.iterator(); - Collection<org.eclipse.graphiti.mm.pictograms.Connection> allCons = new HashSet<org.eclipse.graphiti.mm.pictograms.Connection>(); - while (consIt.hasNext()) { - org.eclipse.graphiti.mm.pictograms.Connection con = consIt.next(); - allCons.add(con); - } - consIt = allCons.iterator(); - while (consIt.hasNext()) { - org.eclipse.graphiti.mm.pictograms.Connection con = consIt.next(); - RemoveContext ctx = new RemoveContext(con); - RemoveRelationFeature ft = new RemoveRelationFeature(getFeatureProvider()); - ft.remove(ctx); - } - } - - @Override - public JPADiagramEditor getDiagramEditor() { - return (JPADiagramEditor)super.getDiagramEditor(); - } - - private JpaProject getTargetJPAProject() { - return ModelIntegrationUtil.getProjectByDiagram(getDiagram().getName()); - } - - public boolean isAlive() { - return !isDisposed; - } - - @Override - public void dispose() { - super.dispose(); - setFeatureProvider(null); - isDisposed = true; - } -}
\ No newline at end of file diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorFeatureProvider.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorFeatureProvider.java deleted file mode 100644 index bc94dccfee..0000000000 --- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorFeatureProvider.java +++ /dev/null @@ -1,641 +0,0 @@ -/******************************************************************************* - * <copyright> - * - * Copyright (c) 2005, 2010 SAP AG. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Stefan Dimov - initial API, implementation and documentation - * - * </copyright> - * - *******************************************************************************/ -package org.eclipse.jpt.jpadiagrameditor.ui.internal.provider; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Properties; - -import org.eclipse.core.resources.IProject; -import org.eclipse.emf.transaction.RecordingCommand; -import org.eclipse.emf.transaction.TransactionalEditingDomain; -import org.eclipse.emf.transaction.util.TransactionUtil; -import org.eclipse.graphiti.dt.IDiagramTypeProvider; -import org.eclipse.graphiti.features.IAddFeature; -import org.eclipse.graphiti.features.ICreateConnectionFeature; -import org.eclipse.graphiti.features.ICreateFeature; -import org.eclipse.graphiti.features.IDeleteFeature; -import org.eclipse.graphiti.features.IDirectEditingFeature; -import org.eclipse.graphiti.features.ILayoutFeature; -import org.eclipse.graphiti.features.IMoveConnectionDecoratorFeature; -import org.eclipse.graphiti.features.IMoveShapeFeature; -import org.eclipse.graphiti.features.IReason; -import org.eclipse.graphiti.features.IRemoveFeature; -import org.eclipse.graphiti.features.IResizeShapeFeature; -import org.eclipse.graphiti.features.context.IAddContext; -import org.eclipse.graphiti.features.context.ICustomContext; -import org.eclipse.graphiti.features.context.IDeleteContext; -import org.eclipse.graphiti.features.context.IDirectEditingContext; -import org.eclipse.graphiti.features.context.ILayoutContext; -import org.eclipse.graphiti.features.context.IMoveConnectionDecoratorContext; -import org.eclipse.graphiti.features.context.IMoveShapeContext; -import org.eclipse.graphiti.features.context.IRemoveContext; -import org.eclipse.graphiti.features.context.IResizeShapeContext; -import org.eclipse.graphiti.features.context.impl.AddConnectionContext; -import org.eclipse.graphiti.features.custom.ICustomFeature; -import org.eclipse.graphiti.features.impl.Reason; -import org.eclipse.graphiti.internal.services.GraphitiInternal; -import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm; -import org.eclipse.graphiti.mm.algorithms.Rectangle; -import org.eclipse.graphiti.mm.algorithms.Text; -import org.eclipse.graphiti.mm.pictograms.Anchor; -import org.eclipse.graphiti.mm.pictograms.Connection; -import org.eclipse.graphiti.mm.pictograms.ContainerShape; -import org.eclipse.graphiti.mm.pictograms.Diagram; -import org.eclipse.graphiti.mm.pictograms.PictogramElement; -import org.eclipse.graphiti.mm.pictograms.Shape; -import org.eclipse.graphiti.services.Graphiti; -import org.eclipse.graphiti.ui.features.DefaultFeatureProvider; -import org.eclipse.jdt.core.ICompilationUnit; -import org.eclipse.jdt.internal.core.CompilationUnit; -import org.eclipse.jdt.internal.core.SourceType; -import org.eclipse.jpt.jpa.core.JpaNode; -import org.eclipse.jpt.jpa.core.context.PersistentAttribute; -import org.eclipse.jpt.jpa.core.context.java.JavaEntity; -import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.JPADiagramEditorPlugin; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.AddAllEntitiesFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.AddAttributeFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.AddJPAEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.AddRelationFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.ClickAddAttributeButtonFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.ClickRemoveAttributeButtonFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CollapseAllEntitiesFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CollapseCompartmentShapeFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CollapseEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CreateJPAEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CreateJPAEntityFromMappedSuperclassFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CreateManyToManyBiDirRelationFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CreateManyToManyUniDirRelationFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CreateManyToOneBiDirRelationFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CreateManyToOneUniDirRelationFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CreateOneToManyUniDirRelationFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CreateOneToOneBiDirRelationFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CreateOneToOneUniDirRelationFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.DeleteJPAEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.DeleteRelationFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.DirectEditAttributeFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.DirectEditJPAEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.ExpandCompartmentShapeFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.ExpandEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.JPAMoveConnectionDecoratorFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.LayoutJPAEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.MoveAttributeFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.MoveEntityShapeFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.RemoveAttributeFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.RemoveJPAEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.RemoveRelationFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.ResizeAttributeFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.ResizeJPAEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.modelintegration.util.IModelIntegrationUtil; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.modelintegration.util.ModelIntegrationUtil; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.modelintegration.util.ModelIntegrationUtilImpl; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.propertypage.JPADiagramPropertyPage; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.relations.AbstractRelation; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.relations.IRelation; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.relations.IRelation.RelDir; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.relations.IRelation.RelType; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.GraphicsUpdaterImpl; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.IGraphicsUpdater; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.IJPAEditorUtil; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.IJpaSolver; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.IPeServiceUtil; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorConstants; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorUtil; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorUtilImpl; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPASolver; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JpaArtifactFactory; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.PeServiceUtilImpl; -import org.eclipse.ui.PlatformUI; - - -@SuppressWarnings("restriction") -public class JPAEditorFeatureProvider extends DefaultFeatureProvider implements IJPAEditorFeatureProvider { - - private ClickAddAttributeButtonFeature clickAddAttBtnFeat = null; - private ClickRemoveAttributeButtonFeature clickRemoveAttBtnFeat = null; - private IPeServiceUtil peUtil = new PeServiceUtilImpl(); - private IJPAEditorUtil jpaEditorUtil = new JPAEditorUtilImpl(); - private IModelIntegrationUtil moinIntegrationUtil = new ModelIntegrationUtilImpl(); - private IGraphicsUpdater graphicsUpdater = new GraphicsUpdaterImpl(); - - public JPAEditorFeatureProvider(IDiagramTypeProvider dtp, IJpaSolver is) { - super(dtp); - is.setFeatureProvider(this); - this.setIndependenceSolver(is); - } - - public void stopThread() { - if (getIndependenceSolver() != null) - ((JPASolver)getIndependenceSolver()).stopThread(); - } - - public void addJPTForUpdate(String jptName) { - ((JPASolver)getIndependenceSolver()).addJPTForUpdate(jptName); - } - - - public void addRemoveIgnore(JavaPersistentType jpt, String atName) { - ((JPASolver)getIndependenceSolver()).addRemoveIgnore(jpt.getName() + "." + atName); //$NON-NLS-1$ - } - - public void addAddIgnore(JavaPersistentType jpt, String atName) { - ((JPASolver)getIndependenceSolver()).addAddIgnore(jpt.getName() + "." + atName); //$NON-NLS-1$ - } - - public HashSet<String> getAddIgnore() { - return ((JPASolver)getIndependenceSolver()).getAddIgnore(); - } - - - public void addAttribForUpdate(PersistenceUnit pu, String entAtMappedBy) { - ((JPASolver)getIndependenceSolver()).addAttribForUpdate(pu, entAtMappedBy); - } - - public boolean existsRelation(JavaPersistentType jpt1, JavaPersistentType jpt2) { - return ((JPASolver)getIndependenceSolver()).existsRelation(jpt1, jpt2); - } - - @Override - public IAddFeature getAddFeature(IAddContext context) { - Object newObj = context.getNewObject(); - if (newObj instanceof JavaPersistentType) { - return new AddJPAEntityFeature(this); - } else if (newObj instanceof AbstractRelation) { - return new AddRelationFeature(this); - } else if (newObj instanceof PersistentAttribute) { - if (Diagram.class.isInstance(context.getTargetContainer())) { - return null; - } else { - return new AddAttributeFeature(this); - } - } else if (newObj instanceof CompilationUnit) { - CompilationUnit cu = (CompilationUnit)newObj; - JavaPersistentType jpt = JPAEditorUtil.getJPType(cu); - if (jpt != null) return new AddJPAEntityFeature(this); - } else if ((newObj instanceof JpaNode)) { - return new AddAllEntitiesFeature(this); - } else if (newObj instanceof SourceType) { - return new AddJPAEntityFeature(this); - } - return super.getAddFeature(context); - } - - - @Override - public ICreateFeature[] getCreateFeatures() { - return new ICreateFeature[] { new CreateJPAEntityFeature(this), new CreateJPAEntityFromMappedSuperclassFeature(this) }; - } - - @Override - public IDeleteFeature getDeleteFeature(IDeleteContext context) { - PictogramElement pe = context.getPictogramElement(); - Object bo = getBusinessObjectForPictogramElement(pe); - if (bo instanceof JavaPersistentType) { - return new DeleteJPAEntityFeature(this); - } else if (bo instanceof AbstractRelation) { - return new DeleteRelationFeature(this); - } else if (bo instanceof JavaPersistentAttribute) { - return new ClickRemoveAttributeButtonFeature(this); - } - return null; - } - - @Override - public ICustomFeature[] getCustomFeatures(ICustomContext context) { - ICustomFeature[] ret = super.getCustomFeatures(context); - List<ICustomFeature> retList = new ArrayList<ICustomFeature>(); - for (int i = 0; i < ret.length; i++) { - retList.add(ret[i]); - } - - retList.add(new CollapseAllEntitiesFeature(this)); - - retList.add(new CollapseEntityFeature(this)); - retList.add(new ExpandEntityFeature(this)); - - retList.add(new CollapseCompartmentShapeFeature(this)); - retList.add(new ExpandCompartmentShapeFeature(this)); - - ret = retList.toArray(ret); - return ret; - } - - - @Override - public IResizeShapeFeature getResizeShapeFeature(IResizeShapeContext context) { - PictogramElement pe = context.getPictogramElement(); - if (getBusinessObjectForPictogramElement(pe) instanceof JavaPersistentType) { - return new ResizeJPAEntityFeature(this); - } - GraphicsAlgorithm ga = pe.getGraphicsAlgorithm(); - if (ga == null) - return super.getResizeShapeFeature(context); - List<GraphicsAlgorithm> ch = ga.getGraphicsAlgorithmChildren(); - if ((ch != null) && (ch.size() > 0) && (ch.get(0) instanceof Text)) { - return new ResizeAttributeFeature(this); - } - - return super.getResizeShapeFeature(context); - } - - - - - @Override - public ILayoutFeature getLayoutFeature(ILayoutContext context) { - PictogramElement pictogramElement = context.getPictogramElement(); - Object bo = getBusinessObjectForPictogramElement(pictogramElement); - if (bo instanceof JavaPersistentType) { - return new LayoutJPAEntityFeature(this); - } - return super.getLayoutFeature(context); - } - - - @Override - public IRemoveFeature getRemoveFeature(IRemoveContext context) { - PictogramElement pe = context.getPictogramElement(); - Object bo = getBusinessObjectForPictogramElement(pe); - if (bo == null) - super.getRemoveFeature(context); - if (bo instanceof JavaPersistentType) { - return new RemoveJPAEntityFeature(this); - } else if (bo instanceof AbstractRelation) { - return new RemoveRelationFeature(this); - } - GraphicsAlgorithm ga = pe.getGraphicsAlgorithm(); - if (ga == null) - return super.getRemoveFeature(context); - List<GraphicsAlgorithm> ch = ga.getGraphicsAlgorithmChildren(); - if ((ch != null) && (ch.size() > 0) && (ch.get(0) instanceof Text)) { - return new RemoveAttributeFeature(this); - } - return super.getRemoveFeature(context); - } - - @Override - public ICreateConnectionFeature[] getCreateConnectionFeatures() { - return new ICreateConnectionFeature[] { - new CreateOneToOneUniDirRelationFeature(this), - new CreateOneToOneBiDirRelationFeature(this), - new CreateOneToManyUniDirRelationFeature(this), - new CreateManyToOneUniDirRelationFeature(this), - new CreateManyToOneBiDirRelationFeature(this), - new CreateManyToManyUniDirRelationFeature(this), - new CreateManyToManyBiDirRelationFeature(this) - }; - } - - @Override - public IReason canAdd(IAddContext context) { - return Reason.createTrueReason(); - } - - public ICustomFeature getAddAllEntitiesFeature() { - return new AddAllEntitiesFeature(this); - } - - @Override - public IMoveShapeFeature getMoveShapeFeature(IMoveShapeContext context) { - PictogramElement pe = context.getPictogramElement(); - Object bo = getBusinessObjectForPictogramElement(pe); - if (JavaPersistentType.class.isInstance(bo)) { - return new MoveEntityShapeFeature(this); - } - if(bo == null){ - return new MoveAttributeFeature(this); - } - GraphicsAlgorithm ga = pe.getGraphicsAlgorithm(); - if (ga == null) - return super.getMoveShapeFeature(context); - List<GraphicsAlgorithm> ch = ga.getGraphicsAlgorithmChildren(); - if ((ch != null) && (ch.size() > 0) && (ch.get(0) instanceof Text)) { - return new MoveAttributeFeature(this); - } - return super.getMoveShapeFeature(context); - } - - - @Override - public IDirectEditingFeature getDirectEditingFeature(IDirectEditingContext context) { - PictogramElement pe = context.getPictogramElement(); - GraphicsAlgorithm ga = pe.getGraphicsAlgorithm(); - if (!(ga instanceof Rectangle)) - return super.getDirectEditingFeature(context); - List<GraphicsAlgorithm> ch = ga.getGraphicsAlgorithmChildren(); - if ((ch == null) || (ch.size() == 0)) - return super.getDirectEditingFeature(context); - ga = ch.get(0); - if (!(ga instanceof Text)) - return super.getDirectEditingFeature(context); - if(((Text)ga).getFont().isItalic()) - return super.getDirectEditingFeature(context); - Object bo = getBusinessObjectForPictogramElement(pe); - if (bo != null) { - if (bo instanceof JavaPersistentAttribute) { - return new DirectEditAttributeFeature(this); - } - } - if (!(pe instanceof Shape)) - return super.getDirectEditingFeature(context); - Shape sh = (Shape)pe; - ContainerShape csh = sh.getContainer(); - if (csh == null) - return super.getDirectEditingFeature(context); - bo = getBusinessObjectForPictogramElement(csh); - if (bo instanceof JavaPersistentType){ - return new DirectEditJPAEntityFeature(this); - } - return super.getDirectEditingFeature(context); - } - - public void addMissingRelations(JavaPersistentType newEntity, ContainerShape newShape) { - Collection<PictogramElement> allContainedPictogramElements = Graphiti.getPeService() - .getAllContainedPictogramElements(getDiagramTypeProvider().getDiagram()); - - for (PictogramElement pe : allContainedPictogramElements) { - if ((pe != newShape) && (pe instanceof ContainerShape)) { - JavaPersistentType entity = (JavaPersistentType)getBusinessObjectForPictogramElement(pe); - AbstractRelation newRel = produceNecessaryRelation(newEntity, entity); - if (newRel != null) { - JavaPersistentType owner = newRel.getOwner(); - JavaPersistentType inverse = newRel.getInverse(); - ContainerShape ownerShape = (ContainerShape)getPictogramElementForBusinessObject(owner); - ContainerShape inverseShape = (ContainerShape)getPictogramElementForBusinessObject(inverse); - AddRelationFeature f = new AddRelationFeature(this); - AddConnectionContext ctx = - new AddConnectionContext(JPAEditorUtil.getAnchor(ownerShape), JPAEditorUtil.getAnchor(inverseShape)); - f.add(ctx); - } - } - } - } - - public void renewAttributeJoiningStrategyPropertyListener(JavaPersistentAttribute jpa) { - ((JPASolver)getIndependenceSolver()).renewAttributeJoiningStrategyPropertyListener(jpa); - } - - private AbstractRelation produceNecessaryRelation(JavaPersistentType ent1, JavaPersistentType ent2) { - return null; - } - - public String produceKeyForRel(JavaPersistentType jpt, String attributeName) { - return ((JPASolver)getIndependenceSolver()).produceKeyForRel(jpt, attributeName); - } - - - public ClickAddAttributeButtonFeature getClickAddAttributeButtonFeature() { - if (clickAddAttBtnFeat == null) { - clickAddAttBtnFeat = new ClickAddAttributeButtonFeature(this); - } - return clickAddAttBtnFeat; - } - - public ClickRemoveAttributeButtonFeature getClickRemoveAttributeButtonFeature() { - if (clickRemoveAttBtnFeat == null) { - clickRemoveAttBtnFeat = new ClickRemoveAttributeButtonFeature(this); - } - return clickRemoveAttBtnFeat; - } - - @Override - public IMoveConnectionDecoratorFeature getMoveConnectionDecoratorFeature( - IMoveConnectionDecoratorContext context) { - return new JPAMoveConnectionDecoratorFeature(this); - } - - public Object getBusinessObjectForKey(String key) { - return getIndependenceSolver().getBusinessObjectForKey(key); - } - - public String getKeyForBusinessObject(Object bo) { - return getIndependenceSolver().getKeyForBusinessObject(bo); - } - - public void putKeyToBusinessObject(String key, Object bo) { - ((JPASolver)getIndependenceSolver()).addKeyBusinessObject(key, bo); - } - - public Object remove(String key) { - return remove(key, false); - } - - public Object remove(String key, boolean save) { - Object res = getBusinessObjectForKey(key); - if (res instanceof JavaPersistentType) { - final JavaPersistentType jpt = (JavaPersistentType)res; - if (save) - JpaArtifactFactory.instance().forceSaveEntityClass(jpt, this); - if(!(jpt.getMapping() instanceof JavaEntity)){ - PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() { - public void run() { - removeFromDiagramIfNotEntity(jpt); - }}); - } - - } - return ((JPASolver)getIndependenceSolver()).remove(key); - } - - - protected void removeAllConnections(Shape shape) { - for (Iterator<Anchor> iter = shape.getAnchors().iterator(); iter.hasNext();) { - Anchor anchor = iter.next(); - for (Iterator<Connection> iterator = Graphiti.getPeService().getAllConnections(anchor).iterator(); iterator.hasNext();) { - Connection connection = iterator.next(); - if (GraphitiInternal.getEmfService().isObjectAlive(connection)) { - Object ob = getBusinessObjectForPictogramElement(connection); - if(ob instanceof AbstractRelation){ - String key = getKeyForBusinessObject(ob); - ((JPASolver)getIndependenceSolver()).remove(key); - } - Graphiti.getPeService().deletePictogramElement(connection); - } - } - } - } - - - private void removeFromDiagramIfNotEntity(final JavaPersistentType jpt) { - final PictogramElement cs = this.getPictogramElementForBusinessObject(jpt); - if (cs != null) { - final Shape shape = (Shape) cs; - TransactionalEditingDomain ted = ModelIntegrationUtil.getTransactionalEditingDomain(this - .getDiagramTypeProvider().getDiagram()); - ted.getCommandStack().execute(new RecordingCommand(ted) { - @Override - protected void doExecute() { - removeAllConnections(shape); - Graphiti.getPeService().deletePictogramElement(cs); - } - }); - } - } - - - - public boolean hasObjectWithName(String name) { - return ((JPASolver)getIndependenceSolver()).containsKey(name); - } - - public void replaceAttribute(final JavaPersistentAttribute oldAt, final JavaPersistentAttribute newAt) { - final PictogramElement pe = this.getPictogramElementForBusinessObject(oldAt); - if (pe == null) { - //System.err.println("PictogramElement is null\n"); - throw new RuntimeException(); - //return; - } - TransactionalEditingDomain ted = TransactionUtil.getEditingDomain(pe); - ted.getCommandStack().execute(new RecordingCommand(ted) { - protected void doExecute() { - JPASolver solver = (JPASolver)getIndependenceSolver(); - solver.remove(solver.getKeyForBusinessObject(oldAt)); - solver.addKeyBusinessObject(solver.getKeyForBusinessObject(newAt), newAt); - if (newAt == null) { - JPADiagramEditorPlugin.logError("New attribute is null\n", new Exception()); //$NON-NLS-1$ - return; - } - link(pe, newAt); - GraphicsAlgorithm ga = pe.getGraphicsAlgorithm(); - if (ga == null) - return; - List<GraphicsAlgorithm> ch = ga.getGraphicsAlgorithmChildren(); - ((Text)ch.get(0)).setValue(newAt.getName()); - } - }); - } - - public boolean doesRelationExist(JavaPersistentType owner, - JavaPersistentType inverse, - String ownerAttributeName, - RelType relType, - RelDir relDir) { - - String id = AbstractRelation.generateId(owner, inverse, ownerAttributeName, relType, relDir); - return (getBusinessObjectForKey(id) != null); - } - - public boolean isRelationRelatedToAttribute(JavaPersistentAttribute jpa) { - return ((JPASolver)getIndependenceSolver()).isRelationRelatedToAttribute(jpa); - } - - public IRelation getRelationRelatedToAttribute(JavaPersistentAttribute jpa) { - return ((JPASolver)getIndependenceSolver()).getRelationRelatedToAttribute(jpa); - } - - public ICompilationUnit getCompilationUnit(JavaPersistentType jpt) { - return ((JPASolver)getIndependenceSolver()).getCompilationUnit(jpt); - } - - public void restoreEntity(JavaPersistentType jpt) { - ((JPASolver)getIndependenceSolver()).restoreEntity(jpt); - } - - public int getAttribsNum(Shape sh) { - String s = Graphiti.getPeService().getPropertyValue(sh, JPAEditorConstants.PROP_ATTRIBS_NUM); - int res = 0; - if (s == null) { - setAttribsNum(0, sh); - } else { - res = Integer.parseInt(s); - } - return res; - } - - public int increaseAttribsNum(Shape sh) { - int attribsNum = getAttribsNum(sh); - attribsNum++; - setAttribsNum(attribsNum, sh); - return attribsNum; - } - - public int decreaseAttribsNum(Shape sh) { - int attribsNum = getAttribsNum(sh); - attribsNum--; - setAttribsNum(attribsNum, sh); - return attribsNum; - } - - public void setAttribsNum(int newAttribsNum, Shape sh) { - Graphiti.getPeService().setPropertyValue(sh, JPAEditorConstants.PROP_ATTRIBS_NUM, "" + newAttribsNum); //$NON-NLS-1$ - } - - /* - public Collection<ResourceOperation> getAffectedPartitionsForModification() { - return new HashSet<ResourceOperation>(); - } - */ - - public void dispose() { - stopThread(); - ((JPASolver)getIndependenceSolver()).dispose(); - setIndependenceSolver(null); - } - - - public IPeServiceUtil getPeUtil() { - return peUtil; - } - - public IJPAEditorUtil getJPAEditorUtil() { - return this.jpaEditorUtil; - } - - public IModelIntegrationUtil getMoinIntegrationUtil() { - return moinIntegrationUtil; - } - - public IGraphicsUpdater getGraphicsUpdater() { - return graphicsUpdater; - } - - public TransactionalEditingDomain getTransactionalEditingDomain() { - Diagram diagram = getDiagramTypeProvider().getDiagram(); - return TransactionUtil.getEditingDomain(diagram); - } - - public PictogramElement getPictogramElementForBusinessObject(Object businessObject) { - PictogramElement pe = super.getPictogramElementForBusinessObject(businessObject); - /* - int cnt = 0; - while ((pe == null) && (cnt < 20)) { - //System.out.println("loop"); - try { - Thread.sleep(250); - } catch (InterruptedException e) { - } - System.out.println("loop; hc:" + businessObject.hashCode()); - pe = super.getPictogramElementForBusinessObject(businessObject); - cnt++; - } - if (pe == null) { - System.out.println("FP - PE is null; hc:" + businessObject.hashCode()); - } - */ - return pe; - } - - public Properties loadProperties(IProject project) { - return JPADiagramPropertyPage.loadProperties(project); - } - -} diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorImageCreator.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorImageCreator.java deleted file mode 100644 index eb3198065a..0000000000 --- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorImageCreator.java +++ /dev/null @@ -1,110 +0,0 @@ -/******************************************************************************* - * <copyright> - * - * Copyright (c) 2005, 2010 SAP AG. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Kiril Mitov - initial API, implementation and documentation - * - * </copyright> - * - *******************************************************************************/ -package org.eclipse.jpt.jpadiagrameditor.ui.internal.provider; - -import org.eclipse.graphiti.mm.algorithms.Image; -import org.eclipse.graphiti.mm.algorithms.Polyline; -import org.eclipse.graphiti.mm.algorithms.Text; -import org.eclipse.graphiti.mm.pictograms.Connection; -import org.eclipse.graphiti.mm.pictograms.ConnectionDecorator; -import org.eclipse.graphiti.mm.pictograms.Diagram; -import org.eclipse.graphiti.mm.pictograms.FreeFormConnection; -import org.eclipse.graphiti.services.Graphiti; -import org.eclipse.graphiti.util.IColorConstant; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorConstants; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorUtil; -import org.eclipse.swt.graphics.Point; - -public class JPAEditorImageCreator implements IJPAEditorImageCreator { - - public Polyline createConnectionLine(Diagram d, Connection connection) { - Polyline polyline = Graphiti.getGaService().createPolyline(connection); - polyline.setForeground(Graphiti.getGaService().manageColor(d, JPAEditorConstants.CONNECTION_LINE_COLOR)); - polyline.setLineWidth(JPAEditorConstants.CONNECTION_LINE_WIDTH); - return polyline; - } - - /* - public ConnectionDecorator createTextConnectionDecorator(Connection connection, String text, double location) { - ConnectionDecorator textDecorator = Graphiti.getPeService().createConnectionDecorator(connection, true, 0.5, true); - Text txt = Graphiti.getGaService().createDefaultText(textDecorator); - txt.setLineWidth(JPAEditorConstants.CONNECTION_LINE_WIDTH); - txt.setValue(text); - Graphiti.getGaService().manageColor(connection.getParent(), IColorConstant.BLACK); - Graphiti.getGaService().setLocation(txt, 5, -20); - return textDecorator; - } - */ - - public ConnectionDecorator createCardinalityConnectionDecorator(Diagram d, Connection c, String text, double location) { - ConnectionDecorator textDecorator = Graphiti.getPeService().createConnectionDecorator(c, true, location, true); - Text txt = Graphiti.getGaService().createDefaultText(d, textDecorator); - txt.setLineWidth(JPAEditorConstants.CONNECTION_LINE_WIDTH); - txt.setValue(text); - Graphiti.getGaService().manageColor(c.getParent(), IColorConstant.BLACK); - Point pt = JPAEditorUtil.recalcTextDecoratorPosition((FreeFormConnection)c, textDecorator); - Graphiti.getGaService().setLocation(txt, pt.x, pt.y, false); - return textDecorator; - } - - public ConnectionDecorator createArrowConnectionDecorator(Connection connection, double location) { - ConnectionDecorator cd = Graphiti.getPeService().createConnectionDecorator(connection, false, location, true); - Polyline arrow = null; - arrow = Graphiti.getGaService().createPolyline(cd, new int[] { 11, 3, 0, 0, 11, -3, 11, 3}); - arrow.setForeground(Graphiti.getGaService().manageColor(connection.getParent(), JPAEditorConstants.CONNECTION_LINE_COLOR)); - arrow.setLineWidth(JPAEditorConstants.CONNECTION_LINE_WIDTH); - return cd; - } - - public ConnectionDecorator createManyEndWithArrowDecorator(Connection connection, double location) { - ConnectionDecorator cd = Graphiti.getPeService().createConnectionDecorator(connection, false, location, true); - Polyline arrow = null; - arrow = Graphiti.getGaService().createPolyline(cd, new int[] { -2, 7, 6, 0, -2, -7, 6, 0, 20, 3, 20, -3, 7, 0}); - arrow.setForeground(Graphiti.getGaService().manageColor(connection.getParent(), JPAEditorConstants.CONNECTION_LINE_COLOR)); - arrow.setLineWidth(JPAEditorConstants.CONNECTION_LINE_WIDTH); - return cd; - } - - public ConnectionDecorator createManyEndDecorator(Connection connection, double location) { - ConnectionDecorator cd = Graphiti.getPeService().createConnectionDecorator(connection, false, location, true); - Polyline arrow = null; - arrow = Graphiti.getGaService().createPolyline(cd, new int[] { 0, 7, - 8, 0, - 0, -7 }); - arrow.setForeground(Graphiti.getGaService().manageColor(connection.getParent(), JPAEditorConstants.CONNECTION_LINE_COLOR)); - arrow.setLineWidth(JPAEditorConstants.CONNECTION_LINE_WIDTH); - return cd; - } - - public ConnectionDecorator createManyStartDecorator(Connection connection, double location) { - ConnectionDecorator cd = Graphiti.getPeService().createConnectionDecorator(connection, false, location, true); - Polyline arrow = null; - arrow = Graphiti.getGaService().createPolyline(cd, new int[] {0, 7, - -8, 0, - 0, -7 }); - arrow.setForeground(Graphiti.getGaService().manageColor(connection.getParent(), JPAEditorConstants.CONNECTION_LINE_COLOR)); - arrow.setLineWidth(JPAEditorConstants.CONNECTION_LINE_WIDTH); - return cd; - } - - public ConnectionDecorator createIconConnectionDecorator(Connection connection, String iconId, double location) { - ConnectionDecorator iconDecorator = Graphiti.getPeService().createConnectionDecorator(connection, true, location, true); - Image icon = Graphiti.getGaService().createImage(connection, iconId); - Graphiti.getGaService().setLocation(icon, 5, -20); - return iconDecorator; - } - -} diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorImageProvider.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorImageProvider.java deleted file mode 100644 index 46905aeafd..0000000000 --- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorImageProvider.java +++ /dev/null @@ -1,95 +0,0 @@ -/******************************************************************************* - * <copyright> - * - * Copyright (c) 2005, 2010 SAP AG. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Stefan Dimov - initial API, implementation and documentation - * - * </copyright> - * - *******************************************************************************/ -package org.eclipse.jpt.jpadiagrameditor.ui.internal.provider; - -import org.eclipse.graphiti.ui.platform.AbstractImageProvider; - -public class JPAEditorImageProvider extends AbstractImageProvider { - - public final static String ID = "org.eclipse.jpt.jpadiagrameditor.ui.JPAEditorImageProvider"; //$NON-NLS-1$ - static final String PRE = "org.eclipse.jpt.jpadiagrameditor.ui."; //$NON-NLS-1$ - public static final String JPA_ENTITY = PRE + "entity"; //$NON-NLS-1$ - public static final String ADD_JPA_ENTITY = PRE + "add_entity"; //$NON-NLS-1$ - public static final String ADD_INHERITED_ENTITY = PRE + "mapped_superclass"; //$NON-NLS-1$ - public static final String PRIMARY_KEY = PRE + "pk"; //$NON-NLS-1$ - public static final String ICON_BASIC = PRE + "field"; //$NON-NLS-1$ - public static final String ADD_ATTRIBUTE = PRE + "add_attribute"; //$NON-NLS-1$ - public static final String REMOVE_ATTRIBUTE = PRE + "remove_attribute"; //$NON-NLS-1$ - public static final String ICON_ONE_TO_ONE = PRE + "one_to_one_relation"; //$NON-NLS-1$ - public static final String ICON_ONE_TO_MANY = PRE + "one_to_many_relation"; //$NON-NLS-1$ - public static final String ICON_MANY_TO_ONE = PRE + "many_to_one_relation"; //$NON-NLS-1$ - public static final String ICON_MANY_TO_MANY = PRE + "many_to_many_relation"; //$NON-NLS-1$ - public static final String ICON_EMBEDDED_ID = PRE + "embedded_id"; //$NON-NLS-1$ - public static final String ICON_VERSION = PRE + "version"; //$NON-NLS-1$ - public static final String ICON_TRANSIENT = PRE + "transient"; //$NON-NLS-1$ - public static final String ICON_EMBEDDED = PRE + "embedded"; //$NON-NLS-1$ - public static final String ICON_UNMAPPED = PRE + "unmapped"; //$NON-NLS-1$ - - - public static final String ICON_ONE_TO_ONE_1_DIR = PRE + "one_to_one_1_dir_relation"; //$NON-NLS-1$ - public static final String ICON_ONE_TO_MANY_1_DIR = PRE + "one_to_many_1_dir_relation"; //$NON-NLS-1$ - public static final String ICON_MANY_TO_ONE_1_DIR = PRE + "many_to_one_1_dir_relation"; //$NON-NLS-1$ - public static final String ICON_MANY_TO_MANY_1_DIR = PRE + "many_to_many_1_dir_relation"; //$NON-NLS-1$ - - public static final String ICON_ONE_TO_ONE_2_DIR = PRE + "one_to_one_2_dir_relation"; //$NON-NLS-1$ - public static final String ICON_MANY_TO_ONE_2_DIR = PRE + "many_to_one_2_dir_relation"; //$NON-NLS-1$ - public static final String ICON_MANY_TO_MANY_2_DIR = PRE + "many_to_many_2_dir_relation"; //$NON-NLS-1$ - - - public static final String ICON_SAVE = PRE + "save"; //$NON-NLS-1$ - public static final String ICON_RESTORE = PRE + "restore"; //$NON-NLS-1$ - public static final String ICON_SAVE_AND_REMOVE = PRE + "save_and_remove"; //$NON-NLS-1$ - - private static final String ROOT_FOLDER_FOR_IMG = "icons/"; //$NON-NLS-1$ - - public JPAEditorImageProvider() { - super(); - } - - @Override - protected void addAvailableImages() { - addImageFilePath(ICON_BASIC, ROOT_FOLDER_FOR_IMG + "ent/basic.gif"); //$NON-NLS-1$ - addImageFilePath(JPA_ENTITY, ROOT_FOLDER_FOR_IMG + "ent/entity.gif"); //$NON-NLS-1$ - addImageFilePath(ADD_JPA_ENTITY, ROOT_FOLDER_FOR_IMG + "ent/add_entity.gif"); //$NON-NLS-1$ - addImageFilePath(ADD_INHERITED_ENTITY, ROOT_FOLDER_FOR_IMG + "ent/mapped-superclass.gif"); //$NON-NLS-1$ - addImageFilePath(PRIMARY_KEY, ROOT_FOLDER_FOR_IMG + "ent/id.gif"); //$NON-NLS-1$ - addImageFilePath(ADD_ATTRIBUTE, ROOT_FOLDER_FOR_IMG + "ent/add_attribute.gif"); //$NON-NLS-1$ - addImageFilePath(REMOVE_ATTRIBUTE, ROOT_FOLDER_FOR_IMG + "ent/remove_attribute.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_ONE_TO_ONE, ROOT_FOLDER_FOR_IMG + "ent/one-to-one.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_ONE_TO_MANY, ROOT_FOLDER_FOR_IMG + "ent/one-to-many.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_MANY_TO_ONE, ROOT_FOLDER_FOR_IMG + "ent/many-to-one.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_MANY_TO_MANY, ROOT_FOLDER_FOR_IMG + "ent/many-to-many.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_EMBEDDED_ID, ROOT_FOLDER_FOR_IMG + "ent/embedded-id.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_VERSION, ROOT_FOLDER_FOR_IMG + "ent/version.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_TRANSIENT, ROOT_FOLDER_FOR_IMG + "ent/transient.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_EMBEDDED, ROOT_FOLDER_FOR_IMG + "ent/embedded.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_UNMAPPED, ROOT_FOLDER_FOR_IMG + "ent/null-attribute-mapping.gif"); //$NON-NLS-1$ - - addImageFilePath(ICON_ONE_TO_ONE_1_DIR, ROOT_FOLDER_FOR_IMG + "ent/one-to-one-1-dir.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_ONE_TO_MANY_1_DIR, ROOT_FOLDER_FOR_IMG + "ent/one-to-many-1-dir.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_MANY_TO_ONE_1_DIR, ROOT_FOLDER_FOR_IMG + "ent/many-to-one-1-dir.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_MANY_TO_MANY_1_DIR, ROOT_FOLDER_FOR_IMG + "ent/many-to-many-1-dir.gif"); //$NON-NLS-1$ - - addImageFilePath(ICON_ONE_TO_ONE_2_DIR, ROOT_FOLDER_FOR_IMG + "ent/one-to-one-2-dir.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_MANY_TO_ONE_2_DIR, ROOT_FOLDER_FOR_IMG + "ent/many-to-one-2-dir.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_MANY_TO_MANY_2_DIR, ROOT_FOLDER_FOR_IMG + "ent/many-to-many-2-dir.gif"); //$NON-NLS-1$ - - addImageFilePath(ICON_SAVE, ROOT_FOLDER_FOR_IMG + "save.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_RESTORE, ROOT_FOLDER_FOR_IMG + "restore.gif"); //$NON-NLS-1$ - addImageFilePath(ICON_SAVE_AND_REMOVE, ROOT_FOLDER_FOR_IMG + "save_and_remove.gif"); //$NON-NLS-1$ - } - -} diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorToolBehaviorProvider.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorToolBehaviorProvider.java deleted file mode 100644 index d70eed4756..0000000000 --- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/provider/JPAEditorToolBehaviorProvider.java +++ /dev/null @@ -1,619 +0,0 @@ -/******************************************************************************* - * <copyright> - * - * Copyright (c) 2005, 2010 SAP AG. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Stefan Dimov - initial API, implementation and documentation - * - * </copyright> - * - *******************************************************************************/ -package org.eclipse.jpt.jpadiagrameditor.ui.internal.provider; - -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IMarker; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.QualifiedName; -import org.eclipse.graphiti.dt.IDiagramTypeProvider; -import org.eclipse.graphiti.features.IFeatureProvider; -import org.eclipse.graphiti.features.context.ICustomContext; -import org.eclipse.graphiti.features.context.IDoubleClickContext; -import org.eclipse.graphiti.features.context.IPictogramElementContext; -import org.eclipse.graphiti.features.context.impl.CreateContext; -import org.eclipse.graphiti.features.context.impl.CustomContext; -import org.eclipse.graphiti.features.context.impl.DeleteContext; -import org.eclipse.graphiti.features.context.impl.RemoveContext; -import org.eclipse.graphiti.features.custom.ICustomFeature; -import org.eclipse.graphiti.internal.features.context.impl.base.PictogramElementContext; -import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm; -import org.eclipse.graphiti.mm.algorithms.Rectangle; -import org.eclipse.graphiti.mm.algorithms.Text; -import org.eclipse.graphiti.mm.algorithms.styles.Font; -import org.eclipse.graphiti.mm.pictograms.ContainerShape; -import org.eclipse.graphiti.mm.pictograms.Diagram; -import org.eclipse.graphiti.mm.pictograms.PictogramElement; -import org.eclipse.graphiti.mm.pictograms.Shape; -import org.eclipse.graphiti.palette.IPaletteCompartmentEntry; -import org.eclipse.graphiti.palette.IToolEntry; -import org.eclipse.graphiti.palette.impl.PaletteCompartmentEntry; -import org.eclipse.graphiti.platform.IPlatformImageConstants; -import org.eclipse.graphiti.services.Graphiti; -import org.eclipse.graphiti.tb.ContextButtonEntry; -import org.eclipse.graphiti.tb.ContextEntryHelper; -import org.eclipse.graphiti.tb.ContextMenuEntry; -import org.eclipse.graphiti.tb.DefaultToolBehaviorProvider; -import org.eclipse.graphiti.tb.IContextButtonEntry; -import org.eclipse.graphiti.tb.IContextButtonPadData; -import org.eclipse.graphiti.tb.IContextMenuEntry; -import org.eclipse.graphiti.tb.IDecorator; -import org.eclipse.graphiti.tb.ImageDecorator; -import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; -import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.JPADiagramEditorPlugin; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.facade.EclipseFacade; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.AddAllEntitiesFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.ClickAddAttributeButtonFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.ClickRemoveAttributeButtonFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CollapseAllEntitiesFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CollapseCompartmentShapeFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.CollapseEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.DeleteJPAEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.DiscardAndRemoveAllEntitiesFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.ExpandAllEntitiesFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.ExpandCompartmentShapeFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.ExpandEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.MoveEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.OpenJPADetailsViewFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.OpenMiniatureViewFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.RefactorAttributeTypeFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.RemoveAndSaveEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.RemoveJPAEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.RenameEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.RestoreEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.SaveAndRemoveAllEntitiesFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.feature.SaveEntityFeature; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.i18n.JPAEditorMessages; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.modelintegration.ui.JPAEditorMatchingStrategy; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.GraphicsUpdater; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.IEclipseFacade; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorConstants; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorUtil; -import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorConstants.ShapeType; -import org.eclipse.ui.PartInitException; - -@SuppressWarnings("restriction") -public class JPAEditorToolBehaviorProvider extends DefaultToolBehaviorProvider { - - private IEclipseFacade facade; - - public JPAEditorToolBehaviorProvider(IDiagramTypeProvider dtp) { - this(dtp, EclipseFacade.INSTANCE); - } - - public JPAEditorToolBehaviorProvider(IDiagramTypeProvider dtp, IEclipseFacade eclipseFacade) { - super(dtp); - this.facade = eclipseFacade; - } - - @Override - public IContextButtonPadData getContextButtonPad(IPictogramElementContext context) { - IContextButtonPadData data = super.getContextButtonPad(context); - ContainerShape cs = null; - PictogramElement pe = ((PictogramElementContext) context).getPictogramElement(); - Object ob = getFeatureProvider().getBusinessObjectForPictogramElement(pe); - if (ob == null){ - return null; - } - if (pe instanceof ContainerShape) { - cs = (ContainerShape)pe; - GraphicsAlgorithm ga = cs.getGraphicsAlgorithm(); - if (ga instanceof Rectangle) { - List<GraphicsAlgorithm> gas = ((Rectangle)ga).getGraphicsAlgorithmChildren(); - if ((gas.size() > 0) && (gas.get(0) instanceof Text)) { - setGenericContextButtons(data, pe, 0); - ClickRemoveAttributeButtonFeature feat = getConcreteFeatureProvider() - .getClickRemoveAttributeButtonFeature(); - DeleteContext delCtx = new DeleteContext(cs); - ContextButtonEntry btn = new ContextButtonEntry(feat, delCtx); - btn.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_deleteAttributeButtonlabel); - btn.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_deleteAttributeButtonDescription); - btn.setIconId(IPlatformImageConstants.IMG_EDIT_DELETE); - data.getDomainSpecificContextButtons().add(btn); - return data; - } - } - } else { - return data; - } - - setGenericContextButtons(data, pe, CONTEXT_BUTTON_DELETE - | CONTEXT_BUTTON_REMOVE); - List<IContextButtonEntry> buttons = data.getGenericContextButtons(); - Iterator<IContextButtonEntry> btnsIt = buttons.iterator(); - while (btnsIt.hasNext()) { - IContextButtonEntry button = btnsIt.next(); - if (button.getFeature() instanceof RemoveJPAEntityFeature) { - button.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_removeEntityFromDiagramButtonLabel); - button.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_removeEntityFromDiagramButtonDescription); - } else if (button.getFeature() instanceof DeleteJPAEntityFeature) { - button.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_deleteEntityFromModelButtonLabel); - button.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_deleteEntityFromModelButtonDescription); - } - } - - ContextButtonEntry button = null; - if (context instanceof PictogramElementContext) { - - ClickAddAttributeButtonFeature feature = getConcreteFeatureProvider().getClickAddAttributeButtonFeature(); - CreateContext createCtx = new CreateContext(); - createCtx.setTargetContainer(cs); - button = new ContextButtonEntry(feature, createCtx); - button.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_createAttributeButtonlabel); - button.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_createAttributeButtonDescription); - button.setIconId(JPAEditorImageProvider.ADD_ATTRIBUTE); - data.getDomainSpecificContextButtons().add(button); - - PictogramElementContext c = (PictogramElementContext) context; - RemoveAndSaveEntityFeature ft2 = new RemoveAndSaveEntityFeature(getFeatureProvider()); - RemoveContext remCtx = new RemoveContext(c.getPictogramElement()); - button = new ContextButtonEntry(ft2, remCtx); - button.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_removeAndSaveButtonText); - button.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_removeAndSaveButtonDescription); - button.setIconId(JPAEditorImageProvider.ICON_SAVE_AND_REMOVE); - data.getDomainSpecificContextButtons().add(button); - - SaveEntityFeature ft = new SaveEntityFeature(getConcreteFeatureProvider()); - CustomContext ctx = new CustomContext(); - ctx.setPictogramElements(new PictogramElement[] { c.getPictogramElement() }); - button = new ContextButtonEntry(ft, ctx); - button.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_saveButtonText); - button.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_saveButtonDescription); - button.setIconId(JPAEditorImageProvider.ICON_SAVE); - data.getDomainSpecificContextButtons().add(button); - - RestoreEntityFeature ft1 = new RestoreEntityFeature(getConcreteFeatureProvider()); - ctx = new CustomContext(); - ctx.setPictogramElements(new PictogramElement[] { c.getPictogramElement() }); - button = new ContextButtonEntry(ft1, ctx); - button.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_restoreButtonText); - button.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_restoreButtonDescription); - button.setIconId(JPAEditorImageProvider.ICON_RESTORE); - data.getDomainSpecificContextButtons().add(button); - - ctx = new CustomContext(new PictogramElement[] { pe }); - IFeatureProvider featureProvider = getFeatureProvider(); - ICustomFeature[] customFeatures = featureProvider.getCustomFeatures(ctx); - int featureCount = customFeatures.length; - for (int i = 0; i < featureCount; i++) { - ICustomFeature customFeature = customFeatures[i]; - if (customFeature.isAvailable(ctx)) { - if ((customFeature instanceof CollapseEntityFeature)) { - IContextButtonEntry contextButton = ContextEntryHelper - .createCollapseContextButton(true, customFeature, ctx); - data.setCollapseContextButton(contextButton); - } else if ((customFeature instanceof ExpandEntityFeature)) { - IContextButtonEntry contextButton = ContextEntryHelper - .createCollapseContextButton(false, customFeature, ctx); - data.setCollapseContextButton(contextButton); - } - } - } - } - - return data; - } - - - @Override - public IPaletteCompartmentEntry[] getPalette() { - List<IPaletteCompartmentEntry> ret = - new ArrayList<IPaletteCompartmentEntry>(); - IPaletteCompartmentEntry[] superCompartments = - super.getPalette(); - for (int i = 0; i < superCompartments.length; i++) { - String newLabel = (superCompartments[i].getLabel().equals("Objects") ? //$NON-NLS-1$ - JPAEditorMessages.PaletteCompartment_Objects : - JPAEditorMessages.PaletteCompartment_Connections); - PaletteCompartmentEntry entry = new PaletteCompartmentEntry(newLabel, superCompartments[i].getIconId()); - List<IToolEntry> lst = superCompartments[i].getToolEntries(); - Iterator<IToolEntry> it = lst.iterator(); - while(it.hasNext()) { - entry.addToolEntry(it.next()); - } - ret.add(entry); - } - IPaletteCompartmentEntry en = ret.get(0); - ret.set(0, ret.get(1)); - ret.set(1, en); - return ret.toArray(new IPaletteCompartmentEntry[ret.size()]); - } - - @Override - public IDecorator[] getDecorators(PictogramElement pe) { - IFeatureProvider featureProvider = getFeatureProvider(); - Object bo = featureProvider.getBusinessObjectForPictogramElement(pe); - - if (bo instanceof JavaPersistentType) { - JavaPersistentType persistentType = (JavaPersistentType) bo; - IFile file = (IFile) persistentType.getResource(); - if(!file.exists()){ - return new IDecorator[0]; - } - IMarker[] markers = new IMarker[0]; - try { - markers = file.findMarkers(null, true, IResource.DEPTH_INFINITE); - IDecorator[] result = new IDecorator[1]; - if (markers.length == 0) - return super.getDecorators(pe); - IMarker marker = getHighestPrioMarker(markers); - ImageDecorator imageRenderingDecorator = createDecoratorFromMarker(marker); - if (imageRenderingDecorator != null) { - imageRenderingDecorator.setX(5 * (pe.getGraphicsAlgorithm().getWidth() / 6)); - imageRenderingDecorator.setY(5 * (pe.getGraphicsAlgorithm().getHeight() / 6)); - result[0] = imageRenderingDecorator; - } - if (result[0] != null) - return result; - } catch (CoreException e) { - JPADiagramEditorPlugin.getDefault().getLog().log(e.getStatus()); - } - } - return super.getDecorators(pe); - } - - private IMarker getHighestPrioMarker(IMarker[] markers) { - IMarker result = markers[0]; - for (IMarker marker : markers) { - try { - final Integer resultSeverity = (Integer) result.getAttribute(IMarker.SEVERITY); - if (resultSeverity == null) - continue; - if (IMarker.SEVERITY_ERROR == resultSeverity) - // return the first error marker - break; - Integer markerSeverity = (Integer) marker.getAttribute(IMarker.SEVERITY); - if ((markerSeverity != null) && (markerSeverity > resultSeverity)) - result = marker; - } catch (CoreException e) { - JPADiagramEditorPlugin.getDefault().getLog().log(e.getStatus()); - continue; - } - } - return result; - } - - private ImageDecorator createDecoratorFromMarker(IMarker marker) { - try { - Integer severity = (Integer) marker.getAttribute(IMarker.SEVERITY); - String decoratorType = IPlatformImageConstants.IMG_ECLIPSE_INFORMATION_TSK; - if (severity != null) { - switch (severity) { - case 0: - decoratorType = IPlatformImageConstants.IMG_ECLIPSE_INFORMATION_TSK; - case 1: - decoratorType = IPlatformImageConstants.IMG_ECLIPSE_WARNING_TSK; - break; - case 2: - decoratorType = IPlatformImageConstants.IMG_ECLIPSE_ERROR_TSK; - break; - } - ImageDecorator imageRenderingDecorator = new ImageDecorator(decoratorType); - imageRenderingDecorator.setMessage((String) marker.getAttribute(IMarker.MESSAGE)); - return imageRenderingDecorator; - } - return null; - } catch (CoreException e) { - JPADiagramEditorPlugin.getDefault().getLog().log(e.getStatus()); - return null; - } - } - - public String getToolTip(GraphicsAlgorithm ga) { - PictogramElement pe = ga.getPictogramElement(); - if (!(ga instanceof Rectangle)) - return null; - List<GraphicsAlgorithm> ch = ga.getGraphicsAlgorithmChildren(); - if ((ch == null) || (ch.size() == 0)) - return null; - ga = ch.get(0); - if (!(ga instanceof Text)) - return null; - Font f = ((Text)ga).getFont(); - if (f == null) - return ""; //$NON-NLS-1$ - if(f.isItalic()){ - return getToolTipForCompartmentShape(ga); - } - - Object bo = getFeatureProvider().getBusinessObjectForPictogramElement(pe); - if (bo != null) { - if (bo instanceof JavaPersistentType) { - String superPersistentTypeName = null; - if (((JavaPersistentType) bo).getSuperPersistentType() != null) { - superPersistentTypeName = ((JavaPersistentType) bo).getSuperPersistentType().getName(); - } - return JPAEditorUtil.getTooltipText((JavaPersistentType)bo, superPersistentTypeName); - } else { - if (bo instanceof JavaPersistentAttribute) { - return JPAEditorUtil.getTooltipText((JavaPersistentAttribute)bo); - } - } - } - if (!(pe instanceof Shape)) - return null; - Shape sh = (Shape)pe; - ContainerShape csh = sh.getContainer(); - if (csh == null) - return null; - bo = getFeatureProvider().getBusinessObjectForPictogramElement(csh); - if (bo instanceof JavaPersistentType) { - String superPersistentTypeName = null; - if (((JavaPersistentType) bo).getSuperPersistentType() != null) { - superPersistentTypeName = ((JavaPersistentType) bo) - .getSuperPersistentType().getName(); - } - return JPAEditorUtil.getTooltipText((JavaPersistentType) bo, - superPersistentTypeName); - } - return null; - } - - private String getToolTipForCompartmentShape(GraphicsAlgorithm ga) { - Text txt = (Text) ga; - ContainerShape shape = (ContainerShape) Graphiti.getPeService().getActiveContainerPe(ga); - if(GraphicsUpdater.isCollapsed(shape)) - return MessageFormat.format(JPAEditorMessages.JPAEditorToolBehaviorProvider_expandCompartToolTip, txt.getValue()); - return MessageFormat.format(JPAEditorMessages.JPAEditorToolBehaviorProvider_collapseCompartToolTip, txt.getValue()); - } - - protected JPAEditorFeatureProvider getConcreteFeatureProvider() { - return (JPAEditorFeatureProvider)super.getFeatureProvider(); - } - - @Override - public IContextMenuEntry[] getContextMenu(ICustomContext context) { - ICustomContext customContext = (ICustomContext)context; - PictogramElement[] pictEls = customContext.getPictogramElements(); - - ICustomFeature saveEntityFeature = new SaveEntityFeature(getFeatureProvider()); - ContextMenuEntry saveEntityMenuItem = new ContextMenuEntry(saveEntityFeature, context); - saveEntityMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_saveMenuItem); - saveEntityMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_saveMenuItemDescr); - saveEntityMenuItem.setSubmenu(false); - - ICustomFeature restoreEntityFeature = new RestoreEntityFeature(getFeatureProvider()); - ContextMenuEntry restoreEntityMenuItem = new ContextMenuEntry(restoreEntityFeature, context); - restoreEntityMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_discardChangesMenuItem); - restoreEntityMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_discardChangesMenuItemDescr); - restoreEntityMenuItem.setSubmenu(false); - - ICustomFeature collapseFeature = new CollapseEntityFeature(getFeatureProvider()); - ContextMenuEntry collapseEntityMenuItem = new ContextMenuEntry(collapseFeature, context); - collapseEntityMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_collapseEntityMenuItem); - collapseEntityMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_collapseEntityMenuItemDescr); - collapseEntityMenuItem.setSubmenu(false); - - ICustomFeature collapseAllFeature = new CollapseAllEntitiesFeature(getFeatureProvider()); - ContextMenuEntry collapseAllMenuItem = new ContextMenuEntry(collapseAllFeature, context); - collapseAllMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_collapseAllEntitiesMenuItem); - collapseAllMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_collapseAllEntitiesMenuItemDescr); - collapseAllMenuItem.setSubmenu(false); - - ICustomFeature expandFeature = new ExpandEntityFeature(getFeatureProvider()); - ContextMenuEntry expandEntityMenuItem= new ContextMenuEntry(expandFeature, context); - expandEntityMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_expandEntityMenuItem); - expandEntityMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_expandEntitymenuItemDescr); - expandEntityMenuItem.setSubmenu(false); - - ICustomFeature expandAllFeature = new ExpandAllEntitiesFeature(getFeatureProvider()); - ContextMenuEntry expandAllMenuItem= new ContextMenuEntry(expandAllFeature, context); - expandAllMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_expandAllEntitiesMenuItem); - expandAllMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_expandAllEntitiesMenuItemDescr); - expandAllMenuItem.setSubmenu(false); - - ICustomFeature openJPADetailsViewFeature = new OpenJPADetailsViewFeature(getFeatureProvider()); - ContextMenuEntry openJPADetailsViewMenuItem = new ContextMenuEntry(openJPADetailsViewFeature, context); - openJPADetailsViewMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_openJPADetailsView); - openJPADetailsViewMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_openJPADetailsViewDesc); - openJPADetailsViewMenuItem.setSubmenu(false); - - ICustomFeature openMiniatureViewFeature = new OpenMiniatureViewFeature(getFeatureProvider()); - ContextMenuEntry openMiniatureViewMenuItem = new ContextMenuEntry(openMiniatureViewFeature, context); - openMiniatureViewMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_openMiniatureView); - openMiniatureViewMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_openMiniatureViewDesc); - openMiniatureViewMenuItem.setSubmenu(false); - - boolean isEmpty = true; - ContextMenuEntry removeAllEntitiesSubmenu = null; - if(getDiagramTypeProvider().getDiagram().getChildren().size()!=0){ - isEmpty = false; - removeAllEntitiesSubmenu = new ContextMenuEntry(null, null); - removeAllEntitiesSubmenu.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_removeAllEntitiesMenu); - removeAllEntitiesSubmenu.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_removeAllEntitiesMenu); - removeAllEntitiesSubmenu.setSubmenu(true); - - ICustomFeature customFeature = new SaveAndRemoveAllEntitiesFeature(getFeatureProvider()); - ContextMenuEntry saveAndRemovEntityMenuItem = new ContextMenuEntry(customFeature, context); - saveAndRemovEntityMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_removeAndSaveAllEntitiesAction); - saveAndRemovEntityMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_removeAndSaveAllEntitiesAction); - saveAndRemovEntityMenuItem.setSubmenu(false); - - customFeature = new DiscardAndRemoveAllEntitiesFeature(getFeatureProvider()); - ContextMenuEntry discardAndRemovEntityMenuItem = new ContextMenuEntry(customFeature, context); - discardAndRemovEntityMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_removeAndDiscardAllEntitiesAction); - discardAndRemovEntityMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_removeAndDiscardAllEntitiesAction); - discardAndRemovEntityMenuItem.setSubmenu(false); - - removeAllEntitiesSubmenu.add(saveAndRemovEntityMenuItem); - removeAllEntitiesSubmenu.add(discardAndRemovEntityMenuItem); - - } - - - if ((pictEls == null) || (pictEls.length == 0)) - return new IContextMenuEntry[] { openJPADetailsViewMenuItem }; - if (pictEls[0] instanceof ContainerShape) { - Object ob = getFeatureProvider().getBusinessObjectForPictogramElement(pictEls[0]); - if (pictEls[0] instanceof Diagram) { - ICustomFeature customFeature = new AddAllEntitiesFeature(getFeatureProvider()); - ContextMenuEntry showAllEntsMenuItem = new ContextMenuEntry(customFeature, context); - showAllEntsMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_showAllTheEntities); - showAllEntsMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_showAllTheEntitiesDesc); - showAllEntsMenuItem.setSubmenu(false); - if(isEmpty){ - return new IContextMenuEntry[] { showAllEntsMenuItem, - collapseAllMenuItem, - expandAllMenuItem, - openJPADetailsViewMenuItem, - openMiniatureViewMenuItem}; - } else { - return new IContextMenuEntry[] { showAllEntsMenuItem, - removeAllEntitiesSubmenu, - collapseAllMenuItem, - expandAllMenuItem, - openJPADetailsViewMenuItem, - openMiniatureViewMenuItem}; - } - } - if((ob == null) && (pictEls[0].getGraphicsAlgorithm() instanceof Rectangle)){ - ICustomFeature collapseCompartmentFeature = new CollapseCompartmentShapeFeature(getFeatureProvider()); - ContextMenuEntry collapseCompartmentMenuItem = new ContextMenuEntry(collapseCompartmentFeature, context); - collapseCompartmentMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_collapseAttrGroupMenuItem); - collapseCompartmentMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_collapseAttrGroupMenuItemDescr); - collapseCompartmentMenuItem.setSubmenu(false); - - ICustomFeature expandCompartmentFeature = new ExpandCompartmentShapeFeature(getFeatureProvider()); - ContextMenuEntry expandCompartmentMenuItem= new ContextMenuEntry(expandCompartmentFeature, context); - expandCompartmentMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_expandAttrMenuItem); - expandCompartmentMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_expandAttrMenuItemDescr); - expandCompartmentMenuItem.setSubmenu(false); - return new IContextMenuEntry[] {collapseCompartmentMenuItem, expandCompartmentMenuItem}; - } - - /* - //Apply Pattern menu - - ICustomFeature applyPatternFeature = new ApplyPatternFeature(getFeatureProvider()); - ContextMenuEntry applyPatternMenuItem = new ContextMenuEntry(applyPatternFeature, context); - applyPatternMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_applyPattern); - applyPatternMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_applyPatternDesc); - applyPatternMenuItem.setSubmenu(false); - //Apply Pattern menu - */ - - ContextMenuEntry refactorClassSubmenu = new ContextMenuEntry(null, null); - refactorClassSubmenu.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_refactorSubMenu); - refactorClassSubmenu.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_refactorSubMenu); - refactorClassSubmenu.setSubmenu(true); - - - ICustomFeature customFeature = new RenameEntityFeature(getFeatureProvider()); - ContextMenuEntry renameEntityMenuItem = new ContextMenuEntry(customFeature, context); - renameEntityMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_renameEntityClass); - renameEntityMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_renameEntityClass); - renameEntityMenuItem.setSubmenu(false); - - customFeature = new MoveEntityFeature(getFeatureProvider()); - ContextMenuEntry moveEntityMenuItem = new ContextMenuEntry(customFeature, context); - moveEntityMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_moveEntityClass); - moveEntityMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_moveEntityClass); - moveEntityMenuItem.setSubmenu(false); - - refactorClassSubmenu.add(renameEntityMenuItem); - refactorClassSubmenu.add(moveEntityMenuItem); - - String shapeType = Graphiti.getPeService().getPropertyValue(pictEls[0], JPAEditorConstants.PROP_SHAPE_TYPE); - - if ((shapeType == null) || !shapeType.equals(ShapeType.ATTRIBUTE.toString())) - return new IContextMenuEntry[] { saveEntityMenuItem, - refactorClassSubmenu, - collapseEntityMenuItem, - collapseAllMenuItem, - expandEntityMenuItem, - expandAllMenuItem, - restoreEntityMenuItem, - //applyPatternMenuItem, - removeAllEntitiesSubmenu, - openJPADetailsViewMenuItem, - openMiniatureViewMenuItem}; - - customFeature = new RefactorAttributeTypeFeature(getFeatureProvider()); - ContextMenuEntry refactorAttributeTypeMenuItem = new ContextMenuEntry(customFeature, context); - refactorAttributeTypeMenuItem.setText(JPAEditorMessages.JPAEditorToolBehaviorProvider_refactorAttributeType); - refactorAttributeTypeMenuItem.setDescription(JPAEditorMessages.JPAEditorToolBehaviorProvider_refactorAttributeTypeDesc); - refactorAttributeTypeMenuItem.setSubmenu(false); - - return new IContextMenuEntry[] { refactorClassSubmenu, - refactorAttributeTypeMenuItem, - collapseAllMenuItem, - expandAllMenuItem, - //applyPatternMenuItem, - openJPADetailsViewMenuItem, - openMiniatureViewMenuItem}; - } - return new IContextMenuEntry[] { removeAllEntitiesSubmenu, - collapseAllMenuItem, - expandAllMenuItem, - openJPADetailsViewMenuItem, - openMiniatureViewMenuItem}; - } - - @Override - public ICustomFeature getDoubleClickFeature(IDoubleClickContext context) { - PictogramElement pe = context.getPictogramElements()[0]; - Object bo = getFeatureProvider().getBusinessObjectForPictogramElement( - pe); - if (bo instanceof JavaPersistentAttribute) { - JavaPersistentAttribute jpa = (JavaPersistentAttribute) bo; - IFile file = (IFile) jpa.getResource(); - try { - file.setSessionProperty(new QualifiedName(null, JPAEditorMatchingStrategy.DOUBLE_CLICK), "true"); //$NON-NLS-1$ - facade.getIDE().openEditor(file); - } catch (PartInitException e) { - JPADiagramEditorPlugin.logError("Cannot open editor", e); //$NON-NLS-1$ - } catch (CoreException e) { - JPADiagramEditorPlugin.logError("Cannot open editor", e); //$NON-NLS-1$ - } - } - if (bo instanceof JavaPersistentType) { - JavaPersistentType jpt = (JavaPersistentType) bo; - IFile file = (IFile) jpt.getResource(); - try { - file.setSessionProperty(new QualifiedName(null, JPAEditorMatchingStrategy.DOUBLE_CLICK), "true"); //$NON-NLS-1$ - facade.getIDE().openEditor(file); - } catch (PartInitException e) { - JPADiagramEditorPlugin.logError("Cannot open editor", e); //$NON-NLS-1$ - } catch (CoreException e) { - JPADiagramEditorPlugin.logError("Cannot open editor", e); //$NON-NLS-1$ - } - } - if ((bo == null) && (pe.getGraphicsAlgorithm() instanceof Rectangle)) { - ICustomContext cont = new CustomContext( - new PictogramElement[] { pe }); - ContainerShape containerShape = (ContainerShape) pe; - if (GraphicsUpdater.isCollapsed(containerShape)) { - ExpandCompartmentShapeFeature feature = new ExpandCompartmentShapeFeature( - getFeatureProvider()); - feature.execute(cont); - } else { - CollapseCompartmentShapeFeature feature = new CollapseCompartmentShapeFeature( - getFeatureProvider()); - feature.execute(cont); - } - - } - return super.getDoubleClickFeature(context); - } - -} |