Lines 13-21
package org.eclipse.sirius.diagram.tools.internal.editor;
Link Here
|
13 |
import java.util.ArrayList; |
13 |
import java.util.ArrayList; |
14 |
import java.util.Arrays; |
14 |
import java.util.Arrays; |
15 |
import java.util.Collection; |
15 |
import java.util.Collection; |
|
|
16 |
import java.util.Collections; |
16 |
import java.util.Iterator; |
17 |
import java.util.Iterator; |
|
|
18 |
import java.util.LinkedHashSet; |
17 |
import java.util.List; |
19 |
import java.util.List; |
18 |
import java.util.Map; |
20 |
import java.util.Map; |
|
|
21 |
import java.util.Set; |
19 |
|
22 |
|
20 |
import org.eclipse.core.commands.operations.IOperationHistoryListener; |
23 |
import org.eclipse.core.commands.operations.IOperationHistoryListener; |
21 |
import org.eclipse.core.commands.operations.IUndoContext; |
24 |
import org.eclipse.core.commands.operations.IUndoContext; |
Lines 28-33
import org.eclipse.core.runtime.IStatus;
Link Here
|
28 |
import org.eclipse.core.runtime.NullProgressMonitor; |
31 |
import org.eclipse.core.runtime.NullProgressMonitor; |
29 |
import org.eclipse.core.runtime.Platform; |
32 |
import org.eclipse.core.runtime.Platform; |
30 |
import org.eclipse.core.runtime.Status; |
33 |
import org.eclipse.core.runtime.Status; |
|
|
34 |
import org.eclipse.core.runtime.SubProgressMonitor; |
31 |
import org.eclipse.core.runtime.jobs.Job; |
35 |
import org.eclipse.core.runtime.jobs.Job; |
32 |
import org.eclipse.core.runtime.preferences.InstanceScope; |
36 |
import org.eclipse.core.runtime.preferences.InstanceScope; |
33 |
import org.eclipse.emf.common.command.Command; |
37 |
import org.eclipse.emf.common.command.Command; |
Lines 78-83
import org.eclipse.gmf.runtime.notation.Diagram;
Link Here
|
78 |
import org.eclipse.gmf.runtime.notation.View; |
82 |
import org.eclipse.gmf.runtime.notation.View; |
79 |
import org.eclipse.jface.action.IAction; |
83 |
import org.eclipse.jface.action.IAction; |
80 |
import org.eclipse.jface.action.IToolBarManager; |
84 |
import org.eclipse.jface.action.IToolBarManager; |
|
|
85 |
import org.eclipse.jface.dialogs.MessageDialog; |
81 |
import org.eclipse.jface.resource.ImageDescriptor; |
86 |
import org.eclipse.jface.resource.ImageDescriptor; |
82 |
import org.eclipse.jface.text.AbstractInformationControlManager; |
87 |
import org.eclipse.jface.text.AbstractInformationControlManager; |
83 |
import org.eclipse.jface.text.IDocument; |
88 |
import org.eclipse.jface.text.IDocument; |
Lines 90-96
import org.eclipse.jface.viewers.IStructuredSelection;
Link Here
|
90 |
import org.eclipse.jface.viewers.StructuredSelection; |
95 |
import org.eclipse.jface.viewers.StructuredSelection; |
91 |
import org.eclipse.sirius.business.api.dialect.DialectManager; |
96 |
import org.eclipse.sirius.business.api.dialect.DialectManager; |
92 |
import org.eclipse.sirius.business.api.dialect.command.RefreshRepresentationsCommand; |
97 |
import org.eclipse.sirius.business.api.dialect.command.RefreshRepresentationsCommand; |
|
|
98 |
import org.eclipse.sirius.business.api.helper.SiriusResourceHelper; |
93 |
import org.eclipse.sirius.business.api.query.DDiagramElementQuery; |
99 |
import org.eclipse.sirius.business.api.query.DDiagramElementQuery; |
|
|
100 |
import org.eclipse.sirius.business.api.query.URIQuery; |
94 |
import org.eclipse.sirius.business.api.session.Session; |
101 |
import org.eclipse.sirius.business.api.session.Session; |
95 |
import org.eclipse.sirius.business.api.session.SessionListener; |
102 |
import org.eclipse.sirius.business.api.session.SessionListener; |
96 |
import org.eclipse.sirius.business.api.session.SessionManager; |
103 |
import org.eclipse.sirius.business.api.session.SessionManager; |
Lines 103-108
import org.eclipse.sirius.diagram.business.api.view.SiriusGMFHelper;
Link Here
|
103 |
import org.eclipse.sirius.diagram.business.api.view.refresh.CanonicalSynchronizer; |
110 |
import org.eclipse.sirius.diagram.business.api.view.refresh.CanonicalSynchronizer; |
104 |
import org.eclipse.sirius.diagram.business.api.view.refresh.CanonicalSynchronizerFactory; |
111 |
import org.eclipse.sirius.diagram.business.api.view.refresh.CanonicalSynchronizerFactory; |
105 |
import org.eclipse.sirius.diagram.business.internal.command.RefreshDiagramOnOpeningCommand; |
112 |
import org.eclipse.sirius.diagram.business.internal.command.RefreshDiagramOnOpeningCommand; |
|
|
113 |
import org.eclipse.sirius.diagram.business.internal.dialect.DiagramDialectArrangeOperation; |
114 |
import org.eclipse.sirius.diagram.business.internal.dialect.DiagramDialectEditorInput; |
106 |
import org.eclipse.sirius.diagram.business.internal.session.DiagramSessionHelper; |
115 |
import org.eclipse.sirius.diagram.business.internal.session.DiagramSessionHelper; |
107 |
import org.eclipse.sirius.diagram.edit.api.part.AbstractDDiagramEditPart; |
116 |
import org.eclipse.sirius.diagram.edit.api.part.AbstractDDiagramEditPart; |
108 |
import org.eclipse.sirius.diagram.edit.api.part.AbstractDiagramNameEditPart; |
117 |
import org.eclipse.sirius.diagram.edit.api.part.AbstractDiagramNameEditPart; |
Lines 177-182
import org.eclipse.sirius.ui.business.api.session.IEditingSession;
Link Here
|
177 |
import org.eclipse.sirius.ui.business.api.session.SessionEditorInput; |
186 |
import org.eclipse.sirius.ui.business.api.session.SessionEditorInput; |
178 |
import org.eclipse.sirius.ui.business.api.session.SessionEditorInputFactory; |
187 |
import org.eclipse.sirius.ui.business.api.session.SessionEditorInputFactory; |
179 |
import org.eclipse.sirius.ui.business.api.session.SessionUIManager; |
188 |
import org.eclipse.sirius.ui.business.api.session.SessionUIManager; |
|
|
189 |
import org.eclipse.sirius.ui.business.api.viewpoint.ViewpointSelectionCallback; |
190 |
import org.eclipse.sirius.ui.business.internal.commands.ChangeViewpointSelectionCommand; |
180 |
import org.eclipse.sirius.viewpoint.DDiagram; |
191 |
import org.eclipse.sirius.viewpoint.DDiagram; |
181 |
import org.eclipse.sirius.viewpoint.DDiagramElement; |
192 |
import org.eclipse.sirius.viewpoint.DDiagramElement; |
182 |
import org.eclipse.sirius.viewpoint.DRepresentation; |
193 |
import org.eclipse.sirius.viewpoint.DRepresentation; |
Lines 184-189
import org.eclipse.sirius.viewpoint.DRepresentationElement;
Link Here
|
184 |
import org.eclipse.sirius.viewpoint.DSemanticDecorator; |
195 |
import org.eclipse.sirius.viewpoint.DSemanticDecorator; |
185 |
import org.eclipse.sirius.viewpoint.DSemanticDiagram; |
196 |
import org.eclipse.sirius.viewpoint.DSemanticDiagram; |
186 |
import org.eclipse.sirius.viewpoint.SiriusPlugin; |
197 |
import org.eclipse.sirius.viewpoint.SiriusPlugin; |
|
|
198 |
import org.eclipse.sirius.viewpoint.description.Layer; |
199 |
import org.eclipse.sirius.viewpoint.description.Viewpoint; |
187 |
import org.eclipse.swt.SWT; |
200 |
import org.eclipse.swt.SWT; |
188 |
import org.eclipse.swt.graphics.Image; |
201 |
import org.eclipse.swt.graphics.Image; |
189 |
import org.eclipse.swt.layout.FillLayout; |
202 |
import org.eclipse.swt.layout.FillLayout; |
Lines 341-346
public class DDiagramEditorImpl extends SiriusDiagramEditor implements DDiagramE
Link Here
|
341 |
*/ |
354 |
*/ |
342 |
@Override |
355 |
@Override |
343 |
public void init(final IEditorSite site, IEditorInput input) throws PartInitException { |
356 |
public void init(final IEditorSite site, IEditorInput input) throws PartInitException { |
|
|
357 |
// If the current DDiagram is shared on a CDO repository and |
358 |
// some |
359 |
// needed Viewpoints are not activated (for example a |
360 |
// contributed |
361 |
// activated layer) |
362 |
final DDiagram diag; |
363 |
if (input instanceof DiagramDialectEditorInput) { |
364 |
diag = ((DiagramDialectEditorInput) input).getAndForgetDiagram(); |
365 |
} else { |
366 |
diag = null; |
367 |
} |
368 |
Set<Viewpoint> viewpointsActivated = null; |
369 |
if (diag != null && URIQuery.CDO_URI_SCHEME.equals(diag.eResource().getURI().scheme())) { |
370 |
viewpointsActivated = activateNeededViewpoints(session, diag, new NullProgressMonitor()); |
371 |
} |
372 |
|
344 |
IEditorInput correctedInput = getCorrectedInput(input); |
373 |
IEditorInput correctedInput = getCorrectedInput(input); |
345 |
|
374 |
|
346 |
if (correctedInput instanceof SessionEditorInput) { |
375 |
if (correctedInput instanceof SessionEditorInput) { |
Lines 393-398
public class DDiagramEditorImpl extends SiriusDiagramEditor implements DDiagramE
Link Here
|
393 |
SiriusDiagramEditorPlugin.getInstance().getLog().log(new Status(IStatus.ERROR, SiriusDiagramEditorPlugin.ID, "Error while getting the session.", e)); |
422 |
SiriusDiagramEditorPlugin.getInstance().getLog().log(new Status(IStatus.ERROR, SiriusDiagramEditorPlugin.ID, "Error while getting the session.", e)); |
394 |
} |
423 |
} |
395 |
|
424 |
|
|
|
425 |
if (viewpointsActivated != null && !viewpointsActivated.isEmpty()) { |
426 |
informOfActivateNeededViewpoints(viewpointsActivated); |
427 |
} |
428 |
if (diag != null) { |
429 |
new DiagramDialectArrangeOperation().arrange(this, diag); |
430 |
} |
431 |
} |
432 |
|
433 |
private Set<Viewpoint> activateNeededViewpoints(Session session, DDiagram dDiagram, IProgressMonitor monitor) { |
434 |
List<Layer> activatedLayers = dDiagram.getActivatedLayers(); |
435 |
Set<Viewpoint> neededViewpoints = new LinkedHashSet<Viewpoint>(); |
436 |
for (Layer activatedLayer : activatedLayers) { |
437 |
if (!activatedLayer.eIsProxy() && activatedLayer.eContainer() != null) { |
438 |
Viewpoint viewpoint = (Viewpoint) activatedLayer.eContainer().eContainer(); |
439 |
neededViewpoints.add(viewpoint); |
440 |
} |
441 |
} |
442 |
Set<Viewpoint> selectedViewpoints = new LinkedHashSet<Viewpoint>(); |
443 |
for (Viewpoint viewpoint : session.getSelectedViewpoints(false)) { |
444 |
selectedViewpoints.add(SiriusResourceHelper.getCorrespondingViewpoint(session, viewpoint)); |
445 |
} |
446 |
neededViewpoints.removeAll(selectedViewpoints); |
447 |
if (!neededViewpoints.isEmpty()) { |
448 |
Command changeViewpointsSelectionCmd = new ChangeViewpointSelectionCommand(session, new ViewpointSelectionCallback(), neededViewpoints, Collections.<Viewpoint> emptySet(), |
449 |
new SubProgressMonitor(monitor, neededViewpoints.size())); |
450 |
session.getTransactionalEditingDomain().getCommandStack().execute(changeViewpointsSelectionCmd); |
451 |
monitor.worked(1); |
452 |
} |
453 |
return neededViewpoints; |
454 |
} |
455 |
|
456 |
private void informOfActivateNeededViewpoints(Set<Viewpoint> viewpointsActivated) { |
457 |
Iterator<Viewpoint> iterator = viewpointsActivated.iterator(); |
458 |
Viewpoint neededSirius = iterator.next(); |
459 |
String viewpointsName = neededSirius.getName(); |
460 |
while (iterator.hasNext()) { |
461 |
neededSirius = iterator.next(); |
462 |
viewpointsName += ", " + neededSirius.getName(); |
463 |
} |
464 |
final String description = viewpointsName; |
465 |
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { |
466 |
|
467 |
public void run() { |
468 |
MessageDialog.openInformation(PlatformUI.getWorkbench().getDisplay().getActiveShell(), "Viewpoints selection", "The current diagram requires some viewpoints selected (" + description |
469 |
+ "), because some activated layers are contributed by these viewpoints"); |
470 |
} |
471 |
|
472 |
}); |
396 |
} |
473 |
} |
397 |
|
474 |
|
398 |
private void initUndoContext() { |
475 |
private void initUndoContext() { |