X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/360b73f08bac73274beb3fc11792998986a150dd..3f09ac44be83e09fbd814e77ab90c7a0c7e748a9:/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/e4/AbstractGraphKeyEditorE4.java diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/e4/AbstractGraphKeyEditorE4.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/e4/AbstractGraphKeyEditorE4.java index 4431626e4..0746e37c1 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/e4/AbstractGraphKeyEditorE4.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/e4/AbstractGraphKeyEditorE4.java @@ -3,30 +3,23 @@ */ package eu.etaxonomy.taxeditor.editor.key.e4; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jface.action.GroupMarker; +import javax.inject.Inject; + +import org.eclipse.e4.ui.di.Focus; +import org.eclipse.e4.ui.di.Persist; +import org.eclipse.e4.ui.model.application.ui.MDirtyable; +import org.eclipse.e4.ui.model.application.ui.basic.MPart; +import org.eclipse.e4.ui.workbench.modeling.ESelectionService; import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.viewers.IBaseLabelProvider; import org.eclipse.jface.viewers.IContentProvider; +import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ControlEvent; -import org.eclipse.swt.events.ControlListener; -import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorSite; -import org.eclipse.ui.IWorkbenchActionConstants; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.part.EditorPart; import org.eclipse.zest.core.viewers.AbstractZoomableViewer; import org.eclipse.zest.core.viewers.GraphViewer; import org.eclipse.zest.core.viewers.IZoomableWorkbenchPart; import org.eclipse.zest.core.viewers.ZoomContributionViewItem; -import org.eclipse.zest.core.widgets.ZestStyles; import org.eclipse.zest.layouts.LayoutAlgorithm; import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.TreeLayoutAlgorithm; @@ -36,151 +29,68 @@ import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.description.IIdentificationKey; import eu.etaxonomy.cdm.model.description.PolytomousKeyNode; import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap; +import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyEditorInput; import eu.etaxonomy.taxeditor.model.IDirtyMarkable; import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; /** - * @author n.hoffmann * + * @author pplitzner + * @since Sep 28, 2017 + * + * @param */ public abstract class AbstractGraphKeyEditorE4 - extends EditorPart implements IConversationEnabled, +implements IConversationEnabled, IZoomableWorkbenchPart, IPostOperationEnabled, IDirtyMarkable { - private CdmFormFactory formFactory; - private Composite container; + protected CdmFormFactory formFactory; + protected Composite container; protected GraphViewer viewer; private LayoutAlgorithm layoutAlgoritm; private ZoomContributionViewItem zoomContributionViewItem; - private boolean dirty = false; private IToolBarManager toolBarManager; - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime. - * IProgressMonitor) - */ - @Override - public void doSave(IProgressMonitor monitor) { - getConversationHolder().commit(true); - setDirty(false); - viewer.refresh(); - } + private PolytomousKeyEditorInput input; - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.part.EditorPart#doSaveAs() - */ - @Override - public void doSaveAs() { - doSave(null); - } + @Inject + protected ESelectionService selService; - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite, - * org.eclipse.ui.IEditorInput) - */ - @Override - public void init(IEditorSite site, IEditorInput input) - throws PartInitException { - setSite(site); - setInput(input); - formFactory = new CdmFormFactory(site.getShell().getDisplay()); - } + @Inject + private MDirtyable dirty; - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.part.EditorPart#isDirty() - */ - @Override - public boolean isDirty() { - return dirty; - } + protected ISelectionChangedListener selectionChangedListener; - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed() - */ - @Override - public boolean isSaveAsAllowed() { - return false; - } + @Inject + private MPart thisPart; - /* - * (non-Javadoc) - * - * @see - * org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets - * .Composite) - */ - @Override - public void createPartControl(Composite parent) { - container = formFactory.createComposite(parent); - - container.setLayout(new FillLayout()); - viewer = new GraphViewer(container, SWT.NONE); - getSite().setSelectionProvider(viewer); - - viewer.setContentProvider(getContentProvider()); - viewer.setLabelProvider(getLabelProvider()); - - viewer.setConnectionStyle(ZestStyles.CONNECTIONS_DIRECTED); - - viewer.setLayoutAlgorithm(getLayoutAlgoritm(), false); - - createMenu(); - - createToolbar(); - - viewer.setInput(getKey()); - - container.addControlListener(new ControlListener() { - - @Override - public void controlResized(ControlEvent e) { - // applyLayout(); - } - - @Override - public void controlMoved(ControlEvent e) { - // TODO Auto-generated method stub - - } - }); + @Persist + public void doSave() { + getConversationHolder().commit(true); + setDirty(false); + viewer.refresh(); } - private void createToolbar() { - getToolBarManager().add(getZoomContributionViewItem()); + public void init(PolytomousKeyEditorInput input) { + this.input = input; } - private void createMenu() { - // Add context menu to tree - MenuManager menuMgr = new MenuManager(); - menuMgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); - - // MenuManager zoomMenu = new MenuManager("Zoom"); - // zoomMenu.add(getZoomContributionViewItem()); - - ZoomContributionViewItem zoomItem = getZoomContributionViewItem(); - menuMgr.add(zoomItem); - getSite().registerContextMenu(menuMgr, viewer); - - Control control = viewer.getGraphControl(); - Menu menu = menuMgr.createContextMenu(control); + public boolean isDirty() { + return dirty.isDirty(); + } - control.setMenu(menu); + public PolytomousKeyEditorInput getEditorInput() { + return input; + } - } + //FIXME E4 migrate +// private void createToolbar() { +// getToolBarManager().add(getZoomContributionViewItem()); +// } protected abstract IBaseLabelProvider getLabelProvider(); @@ -193,14 +103,15 @@ public abstract class AbstractGraphKeyEditorE4 */ public abstract T getKey(); - @Override + @Focus public void setFocus() { - viewer.getControl().setFocus(); + if(viewer!=null && viewer.getControl()!=null && !viewer.getControl().isDisposed()) { + viewer.getControl().setFocus(); + } } public void refresh() { viewer.refresh(); - // graphViewer.applyLayout(); } @Override @@ -213,7 +124,7 @@ public abstract class AbstractGraphKeyEditorE4 return viewer; } - private LayoutAlgorithm getLayoutAlgoritm() { + protected LayoutAlgorithm getLayoutAlgoritm() { if (layoutAlgoritm == null) { // layoutAlgoritm = new CompositeLayoutAlgorithm( // LayoutStyles.NO_LAYOUT_NODE_RESIZING, @@ -250,13 +161,14 @@ public abstract class AbstractGraphKeyEditorE4 return true; } - private IToolBarManager getToolBarManager() { - if (toolBarManager == null) { - toolBarManager = getEditorSite().getActionBars() - .getToolBarManager(); - } - return toolBarManager; - } + //FIXME E4 migrate +// private IToolBarManager getToolBarManager() { +// if (toolBarManager == null) { +// toolBarManager = getEditorSite().getActionBars() +// .getToolBarManager(); +// } +// return toolBarManager; +// } public void applyLayout() { viewer.applyLayout(); @@ -268,26 +180,15 @@ public abstract class AbstractGraphKeyEditorE4 } public void setDirty(boolean dirty) { - this.dirty = dirty; - firePropertyChange(PROP_DIRTY); + this.dirty.setDirty(dirty); } - /* - * (non-Javadoc) - * - * @see - * eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider#changed( - * java.lang.Object) - */ @Override public void changed(Object element) { setDirty(true); viewer.update(element, null); } - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider#forceDirty() - */ @Override public void forceDirty() { changed(null);