ref #6913 Remove poly key view
authorPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 4 May 2018 14:33:39 +0000 (16:33 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 4 May 2018 14:33:39 +0000 (16:33 +0200)
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/PolytomousKeyViewPart.java [deleted file]
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/PolytomousKeyViewPartDataChangeBehavior.java [deleted file]

diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/PolytomousKeyViewPart.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/PolytomousKeyViewPart.java
deleted file mode 100644 (file)
index b2f959e..0000000
+++ /dev/null
@@ -1,342 +0,0 @@
-/**
- *
- */
-package eu.etaxonomy.taxeditor.navigation.key.polytomous;
-
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.GroupMarker;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.viewers.ColumnLabelProvider;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ListViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.part.ViewPart;
-
-import eu.etaxonomy.cdm.api.application.CdmApplicationState;
-import eu.etaxonomy.cdm.api.application.CdmChangeEvent;
-import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action;
-import eu.etaxonomy.cdm.api.application.ICdmChangeListener;
-import eu.etaxonomy.cdm.api.application.ICdmDataChangeService;
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
-import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;
-import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.description.PolytomousKey;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
-import eu.etaxonomy.taxeditor.model.ContextListenerAdapter;
-import eu.etaxonomy.taxeditor.model.DataChangeBridge;
-import eu.etaxonomy.taxeditor.model.IContextListener;
-import eu.etaxonomy.taxeditor.model.MessagingUtils;
-import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
-import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
-import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
-import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
-import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-
-/**
- * @author n.hoffmann
- *
- */
-public class PolytomousKeyViewPart extends ViewPart implements
-               IConversationEnabled, ICdmEntitySessionEnabled, IPostOperationEnabled,
-               ICdmChangeListener {
-
-       private class FilterModifyListener implements ModifyListener{
-               @Override
-               public void modifyText(ModifyEvent e) {
-                       ViewerFilter filter = new ViewerFilter(){
-
-                               @Override
-                               public boolean select(Viewer viewer, Object parentElement,
-                                               Object element) {
-
-                                       if(element instanceof PolytomousKey){
-                                               PolytomousKey key = (PolytomousKey) element;
-                                               if(key.getTitleCache().contains(text_filter.getText())){
-                                                       return true;
-                                               }
-                                       }
-
-                                       return false;
-                               }
-
-                       };
-
-                       viewer.setFilters(new ViewerFilter[]{filter});
-               }
-       }
-
-
-       public static final String ID = "eu.etaxonomy.taxeditor.navigation.key.polytomous.polytomousKeyViewPart"; //$NON-NLS-1$
-
-       public static final String OPEN_COMMAND_ID = "eu.etaxonomy.taxeditor.navigation.key.polytomous.editNodes"; //$NON-NLS-1$
-
-       private class ContextListener extends ContextListenerAdapter{
-               /* (non-Javadoc)
-                * @see eu.etaxonomy.taxeditor.model.IContextListener#contextStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
-                */
-               @Override
-               public void contextStop(IMemento memento, IProgressMonitor monitor) {
-                       monitor.subTask(Messages.PolytomousKeyViewPart_SHUTDOWN);
-                       if(!viewer.getControl().isDisposed()){
-                           viewer.setInput(null);
-                       }
-               }
-
-               /* (non-Javadoc)
-                * @see eu.etaxonomy.taxeditor.model.ContextListenerAdapter#contextStart(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
-                */
-               @Override
-               public void contextStart(IMemento memento, IProgressMonitor monitor) {
-                       monitor.subTask(Messages.PolytomousKeyViewPart_INIT);
-                       setInput();
-               }
-       }
-
-       private ListViewer viewer;
-       private ConversationHolder conversation;
-       private IContextListener contextListener;
-       private CdmFormFactory formFactory;
-       private Text text_filter;
-       private ICdmEntitySession cdmEntitySession;
-
-       private PolytomousKeyViewPartDataChangeBehavior dataChangeBehavior;
-
-       public PolytomousKeyViewPart(){
-//             formFactory = new CdmFormFactory(Display.getDefault());
-       }
-
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
-        */
-       @Override
-       public void createPartControl(Composite parent) {
-
-               Composite container = new Composite(parent, SWT.NONE);
-               container.setLayout(new GridLayout());
-
-               contextListener = new ContextListener();
-               CdmStore.getContextManager().addContextListener(contextListener);
-
-               text_filter = formFactory.createText(container, ""); //$NON-NLS-1$
-               text_filter.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
-               text_filter.addModifyListener(new FilterModifyListener());
-
-               viewer = new ListViewer(container, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI);
-               viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
-               viewer.setContentProvider(new PolytomousKeyContentProvider());
-               viewer.setLabelProvider(new ColumnLabelProvider());
-
-               viewer.addDoubleClickListener(new IDoubleClickListener() {
-
-                       @Override
-                       public void doubleClick(DoubleClickEvent event) {
-                           openSelectedKeyNodes();
-                       }
-               });
-
-
-               getSite().setSelectionProvider(viewer);
-
-               createMenu();
-
-               if(CdmStore.isActive()){
-                       setInput();
-               }
-       }
-
-       public void openSelectedKeyNodes() {
-        ICommandService commandService = getSite().getService(ICommandService.class);
-
-        Command command = commandService.getCommand(OPEN_COMMAND_ID);
-        if(command.isEnabled()) {
-            IHandlerService handlerService = getSite().getService(IHandlerService.class);
-            try {
-                handlerService.executeCommand(OPEN_COMMAND_ID, null);
-            } catch (NotDefinedException e) {
-                throw new RuntimeException("Could not find open command: " + OPEN_COMMAND_ID); //$NON-NLS-1$
-            } catch (Exception e) {
-                MessagingUtils.error(getClass(), Messages.PolytomousKeyViewPart_EXCEPTION, e);
-            }
-        }
-       }
-
-       public void setViewerSelection(ISelection selection, boolean reveal) {
-           getSite().setSelectionProvider(viewer);
-           viewer.setSelection(selection,reveal);
-           viewer.getList().notifyListeners(SWT.Selection,new Event());
-       }
-
-       private void createMenu(){
-               MenuManager menuManager = new MenuManager();
-               menuManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
-
-               getSite().registerContextMenu(menuManager, viewer);
-
-               Control control = viewer.getControl();
-               Menu menu = menuManager.createContextMenu(control);
-               menuManager.setRemoveAllWhenShown(true);
-
-               control.setMenu(menu);
-       }
-
-       private void setInput() {
-               conversation = CdmStore.createConversation();
-               conversation.registerForDataStoreChanges(this);
-               cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true);
-               CdmApplicationState.getCurrentDataChangeService().register(this);
-
-               List<PolytomousKey> input = CdmStore.getService(IPolytomousKeyService.class).list(PolytomousKey.class, null, null, null, null);
-               if(!viewer.getControl().isDisposed()){
-                   viewer.setInput(input);
-               }
-       }
-
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
-        */
-       @Override
-       public void setFocus() {
-           if(cdmEntitySession != null) {
-            cdmEntitySession.bind();
-        }
-               viewer.getControl().setFocus();
-       }
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
-        */
-       @Override
-       public void update(CdmDataChangeMap changeEvents) {
-               if (dataChangeBehavior == null) {
-                       dataChangeBehavior = new PolytomousKeyViewPartDataChangeBehavior(this);
-               }
-
-               DataChangeBridge.handleDataChange(changeEvents, dataChangeBehavior);
-       }
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
-        */
-       @Override
-       public ConversationHolder getConversationHolder() {
-               return conversation;
-       }
-
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.part.WorkbenchPart#dispose()
-        */
-       @Override
-       public void dispose() {
-           if(conversation!=null){
-               conversation.unregisterForDataStoreChanges(this);
-               conversation.close();
-               CdmStore.getContextManager().removeContextListener(contextListener);
-           }
-           if(cdmEntitySession != null) {
-               cdmEntitySession.dispose();
-           }
-           ICdmDataChangeService currentDataChangeService = CdmApplicationState.getCurrentDataChangeService();
-           if(currentDataChangeService!=null){
-               currentDataChangeService.unregister(this);
-           }
-               super.dispose();
-       }
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.operation.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
-        */
-       @Override
-       public boolean postOperation(CdmBase objectAffectedByOperation) {
-               getConversationHolder().bind();
-               getConversationHolder().commit(true);
-               viewer.refresh();
-               return true;
-       }
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.operation.IPostOperationEnabled#onComplete()
-        */
-       @Override
-       public boolean onComplete() {
-               return true;
-       }
-
-       /**
-        *
-        */
-       public void refresh() {
-               getConversationHolder().bind();
-               //FIXME : Need to make sure this is a stable fix (ticket 3822)
-               getConversationHolder().commit();
-               List<PolytomousKey> input = CdmStore.getService(IPolytomousKeyService.class).list(PolytomousKey.class, null, null, null, null);
-               if(!viewer.getControl().isDisposed()){
-                   viewer.setInput(input);
-               }
-       }
-
-       public List<PolytomousKey> getKeys() {
-               return (List<PolytomousKey>)viewer.getInput();
-       }
-
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getCdmEntitySession()
-     */
-    @Override
-    public ICdmEntitySession getCdmEntitySession() {
-        return cdmEntitySession;
-    }
-
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities()
-     */
-    @Override
-    public  List<PolytomousKey> getRootEntities() {
-        return getKeys();
-    }
-
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.cdm.api.application.ICdmChangeListener#onChange(eu.etaxonomy.cdm.api.application.CdmChangeEvent)
-     */
-    @Override
-    public void onChange(CdmChangeEvent event) {
-        if(event.getAction() == Action.Delete && PolytomousKey.class.equals(event.getEntityType())) {
-            refresh();
-        }
-
-    }
-
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getPropertyPathsMap()
-     */
-    @Override
-    public Map<Object, List<String>> getPropertyPathsMap() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-}
diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/PolytomousKeyViewPartDataChangeBehavior.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/PolytomousKeyViewPartDataChangeBehavior.java
deleted file mode 100644 (file)
index b668ac2..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-
-package eu.etaxonomy.taxeditor.navigation.key.polytomous;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.swt.widgets.Display;
-
-import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.description.PolytomousKey;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent.EventType;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
-import eu.etaxonomy.taxeditor.model.AbstractDataChangeBehaviour;
-import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
-
-/**
- * @author n.hoffmann
- * @created May 5, 2011
- * @version 1.0
- */
-public class PolytomousKeyViewPartDataChangeBehavior extends
-               AbstractDataChangeBehaviour {
-
-    private static final String UPDATING_POLYTOMOUS_KEY_VIEWER = Messages.PolytomousKeyViewPartDataChangeBehavior_UPDATE;
-    private final PolytomousKeyViewPart source;
-
-       /**
-        * @param polytomousKeyViewPart
-        */
-       public PolytomousKeyViewPartDataChangeBehavior(
-                       PolytomousKeyViewPart polytomousKeyViewPart) {
-               source = polytomousKeyViewPart;
-       }
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.model.AbstractDataChangeBehaviour#reactOnDataChange(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
-        */
-       @Override
-       public void reactOnDataChange(CdmDataChangeMap changeEvents) {
-               if(isRelevant(changeEvents)){
-                       final Display display = Display.getCurrent();
-                       Job job = new Job(UPDATING_POLYTOMOUS_KEY_VIEWER) {
-
-                               @Override
-                               protected IStatus run(IProgressMonitor monitor) {
-                                       monitor.beginTask(UPDATING_POLYTOMOUS_KEY_VIEWER, 3);
-                                       monitor.worked(1);
-
-                                       // clear the session completely
-                                       monitor.subTask(Messages.PolytomousKeyViewPartDataChangeBehavior_CLEAR);
-                                       display.asyncExec(new Runnable() {
-                                                @Override
-                        public void run() {
-                                                        source.getConversationHolder().clear();
-                                                }
-                                       });
-                                       // FIXME completely clearing the session is a brute force approach.
-                                       // It would be much more elegant to clear only those elements that have been changed.
-                                       // I could not get that to work but we should consider workin on this because we might
-                                       // run into serious performance issues, especially when it comes to large trees
-                                       //
-                                       // at least, we moved this to a job so it can run in a background thred
-                                       // seems to improve the situation but not sure if final solution
-                                       monitor.worked(1);
-
-                                       monitor.subTask(Messages.PolytomousKeyViewPartDataChangeBehavior_REFRESH);
-
-                                       display.asyncExec(new Runnable() {
-                                           @Override
-                        public void run() {
-                                               source.refresh();
-                                           }
-                                       });
-
-
-
-                                       monitor.worked(1);
-                                       monitor.done();
-                                       return Status.OK_STATUS;
-                               }
-                       };
-
-                       job.setPriority(Job.SHORT);
-                       job.schedule();
-
-               }
-       }
-
-       /**
-        * @return
-        */
-       private boolean isRelevant(CdmDataChangeMap changeEvents) {
-               for(CdmDataChangeEvent event : changeEvents.getAllEvents()){
-                       EventType eventType = event.getEventType();
-                       CdmBase eventEntity = event.getEntity();
-
-                       // all poyltomous key changes are relevant
-                       if((eventType == EventType.INSERT || eventType == EventType.DELETE || eventType == EventType.UPDATE)
-                                       && eventEntity instanceof PolytomousKey){
-                               return true;
-                       }
-               }
-               return false;
-       }
-}