4 package eu
.etaxonomy
.taxeditor
.editor
.key
.e4
;
6 import javax
.inject
.Inject
;
8 import org
.eclipse
.e4
.ui
.di
.Focus
;
9 import org
.eclipse
.e4
.ui
.di
.Persist
;
10 import org
.eclipse
.e4
.ui
.model
.application
.ui
.MDirtyable
;
11 import org
.eclipse
.e4
.ui
.model
.application
.ui
.basic
.MPart
;
12 import org
.eclipse
.e4
.ui
.workbench
.modeling
.ESelectionService
;
13 import org
.eclipse
.jface
.action
.IToolBarManager
;
14 import org
.eclipse
.jface
.viewers
.IBaseLabelProvider
;
15 import org
.eclipse
.jface
.viewers
.IContentProvider
;
16 import org
.eclipse
.jface
.viewers
.ISelectionChangedListener
;
17 import org
.eclipse
.jface
.viewers
.StructuredSelection
;
18 import org
.eclipse
.swt
.widgets
.Composite
;
19 import org
.eclipse
.zest
.core
.viewers
.AbstractZoomableViewer
;
20 import org
.eclipse
.zest
.core
.viewers
.GraphViewer
;
21 import org
.eclipse
.zest
.core
.viewers
.IZoomableWorkbenchPart
;
22 import org
.eclipse
.zest
.core
.viewers
.ZoomContributionViewItem
;
23 import org
.eclipse
.zest
.layouts
.LayoutAlgorithm
;
24 import org
.eclipse
.zest
.layouts
.LayoutStyles
;
25 import org
.eclipse
.zest
.layouts
.algorithms
.TreeLayoutAlgorithm
;
27 import eu
.etaxonomy
.cdm
.api
.conversation
.IConversationEnabled
;
28 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
29 import eu
.etaxonomy
.cdm
.model
.description
.IIdentificationKey
;
30 import eu
.etaxonomy
.cdm
.model
.description
.PolytomousKeyNode
;
31 import eu
.etaxonomy
.cdm
.persistence
.hibernate
.CdmDataChangeMap
;
32 import eu
.etaxonomy
.taxeditor
.editor
.key
.polytomous
.PolytomousKeyEditorInput
;
33 import eu
.etaxonomy
.taxeditor
.model
.IDirtyMarkable
;
34 import eu
.etaxonomy
.taxeditor
.operation
.IPostOperationEnabled
;
35 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
44 public abstract class AbstractGraphKeyEditorE4
<T
extends IIdentificationKey
>
45 implements IConversationEnabled
,
46 IZoomableWorkbenchPart
, IPostOperationEnabled
,
49 protected CdmFormFactory formFactory
;
50 protected Composite container
;
51 protected GraphViewer viewer
;
53 private LayoutAlgorithm layoutAlgoritm
;
54 private ZoomContributionViewItem zoomContributionViewItem
;
56 private IToolBarManager toolBarManager
;
58 private PolytomousKeyEditorInput input
;
61 protected ESelectionService selService
;
64 private MDirtyable dirty
;
66 protected ISelectionChangedListener selectionChangedListener
;
69 private MPart thisPart
;
72 public void doSave() {
73 getConversationHolder().commit(true);
78 public void init(PolytomousKeyEditorInput input
) {
82 public boolean isDirty() {
83 return dirty
.isDirty();
86 public PolytomousKeyEditorInput
getEditorInput() {
91 // private void createToolbar() {
92 // getToolBarManager().add(getZoomContributionViewItem());
95 protected abstract IBaseLabelProvider
getLabelProvider();
97 protected abstract IContentProvider
getContentProvider();
100 * Return the key that this editor
104 public abstract T
getKey();
107 public void setFocus() {
108 if(viewer
!=null && viewer
.getControl()!=null && !viewer
.getControl().isDisposed()) {
109 viewer
.getControl().setFocus();
113 public void refresh() {
118 public void update(CdmDataChangeMap changeEvents
) {
123 public AbstractZoomableViewer
getZoomableViewer() {
127 protected LayoutAlgorithm
getLayoutAlgoritm() {
128 if (layoutAlgoritm
== null) {
129 // layoutAlgoritm = new CompositeLayoutAlgorithm(
130 // LayoutStyles.NO_LAYOUT_NODE_RESIZING,
131 // new LayoutAlgorithm[] {
132 // new TreeLayoutAlgorithm(
133 // LayoutStyles.NO_LAYOUT_NODE_RESIZING),
134 // new HorizontalShift(
135 // LayoutStyles.NO_LAYOUT_NODE_RESIZING) });
137 layoutAlgoritm
= new TreeLayoutAlgorithm(
138 LayoutStyles
.NO_LAYOUT_NODE_RESIZING
);
139 layoutAlgoritm
.setEntityAspectRatio(0.5);
141 return layoutAlgoritm
;
144 private ZoomContributionViewItem
getZoomContributionViewItem() {
145 if (zoomContributionViewItem
== null) {
146 zoomContributionViewItem
= new ZoomContributionViewItem(this);
148 return new ZoomContributionViewItem(this);
152 public boolean postOperation(CdmBase objectAffectedByOperation
) {
156 if (objectAffectedByOperation
instanceof PolytomousKeyNode
) {
157 viewer
.setSelection(new StructuredSelection(
158 objectAffectedByOperation
), true);
165 // private IToolBarManager getToolBarManager() {
166 // if (toolBarManager == null) {
167 // toolBarManager = getEditorSite().getActionBars()
168 // .getToolBarManager();
170 // return toolBarManager;
173 public void applyLayout() {
174 viewer
.applyLayout();
178 public boolean onComplete() {
182 public void setDirty(boolean dirty
) {
183 this.dirty
.setDirty(dirty
);
187 public void changed(Object element
) {
189 viewer
.update(element
, null);
193 public void forceDirty() {