- added toolbar buttons for toggling the different insertion modes
authorPatric Plitzner <p.plitzner@bgbm.org>
Wed, 5 Nov 2014 12:01:42 +0000 (12:01 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Wed, 5 Nov 2014 12:01:42 +0000 (12:01 +0000)
 - added menu entry to load pherogram (also possible with shortcut CTRL+O)
 - added status bar indicating the current insertion mode

.gitattributes
eu.etaxonomy.taxeditor.editor/plugin.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/AddAHandler.java [deleted file]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/molecular/AlignmentEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/molecular/ToggleInsertOverwriteButton.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/molecular/ToggleLeftRightInsertionButton.java [new file with mode: 0644]

index b784f78f8a5a880c0f409c51759c8a9355a7591c..0a2103d0edf5dd82f6a8c2b8f4f716b674d2b31f 100644 (file)
@@ -386,7 +386,6 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/Viewer
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/group/authority/CdmAuthorityEditor.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/group/authority/CdmAuthorityEditorInput.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/group/authority/handler/EditCdmAuthoritiesHandler.java -text
-eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/AddAHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/EditNewTaxonHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/LoadPherogramHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenAlignmentEditor.java -text
@@ -426,6 +425,8 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/molecu
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/molecular/AlignmentEditorInput.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/molecular/CMDAlignmentObjectPlaceholder.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/molecular/ContigSequenceDataProvider.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/molecular/ToggleInsertOverwriteButton.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/molecular/ToggleLeftRightInsertionButton.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/container/AbstractGroup.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/container/AbstractGroupedContainer.java -text
index 90254eae65b947e6dc43b11b8ee6cf88f9afc98e..27ca72cdb7a8e53d19b782f99ed177dbf4e56c9d 100644 (file)
             </visibleWhen>
          </command>
       </menuContribution>
+      <menuContribution
+            allPopups="false"
+            locationURI="menu:org.eclipse.ui.main.menu">
+         <menu
+               label="Alignment Editor">
+            <command
+                  commandId="eu.etaxonomy.taxeditor.editor.molecular.AlignmentEditor.loadPherogram"
+                  label="Load Pherogram"
+                  style="push">
+            </command>
+            <visibleWhen
+                  checkEnabled="true">
+               <with
+                     variable="activePartId">
+                  <equals
+                        value="eu.etaxonomy.taxeditor.editor.molecular.AlignmentEditor">
+                  </equals>
+               </with>
+            </visibleWhen>
+         </menu>
+      </menuContribution>
+      <menuContribution
+            locationURI="toolbar:org.eclipse.ui.main.toolbar?after=eu.etaxonomy.taxeditor.navigation.search.toolbar">
+         <toolbar
+               id="eu.etaxonomy.taxeditor.editor.alignmentToolbar">
+            <control
+                  class="eu.etaxonomy.taxeditor.editor.molecular.ToggleLeftRightInsertionButton">
+               <visibleWhen
+                     checkEnabled="true">
+                  <with
+                        variable="activePartId">
+                     <equals
+                           value="eu.etaxonomy.taxeditor.editor.molecular.AlignmentEditor">
+                     </equals>
+                  </with>
+               </visibleWhen>
+            </control>
+            <control
+                  class="eu.etaxonomy.taxeditor.editor.molecular.ToggleInsertOverwriteButton">
+               <visibleWhen
+                     checkEnabled="true">
+                  <with
+                        variable="activePartId">
+                     <equals
+                           value="eu.etaxonomy.taxeditor.editor.molecular.AlignmentEditor">
+                     </equals>
+                  </with>
+               </visibleWhen>
+            </control>
+         </toolbar>
+      </menuContribution>
    </extension>
    <extension
          point="org.eclipse.ui.handlers">
             </with>
          </activeWhen>
       </handler>
-      <handler
-            class="eu.etaxonomy.taxeditor.editor.handler.AddAHandler"
-            commandId="eu.etaxonomy.taxeditor.editor.molecular.AlignmentEditor.addA">
-         <activeWhen>
-            <with
-                  variable="activePartId">
-               <equals
-                     value="eu.etaxonomy.taxeditor.editor.molecular.AlignmentEditor">
-               </equals>
-            </with>
-         </activeWhen>
-      </handler>
       <handler
             class="eu.etaxonomy.taxeditor.editor.view.derivate.handler.DeleteDerivateHandler"
             commandId="org.eclipse.ui.edit.delete">
             id="eu.etaxonomy.taxeditor.bindings.scheme.default"
             name="%scheme.name">
       </scheme>
-      <key
-            commandId="eu.etaxonomy.taxeditor.editor.molecular.AlignmentEditor.addA"
-            schemeId="eu.etaxonomy.taxeditor.bindings.scheme.default"
-            sequence="A">
-      </key>
       <key
             commandId="eu.etaxonomy.taxeditor.editor.molecular.AlignmentEditor.loadPherogram"
             schemeId="eu.etaxonomy.taxeditor.bindings.scheme.default"
-            sequence="O">
+            sequence="M1+O">
       </key>
    </extension>
     <extension
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/AddAHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/AddAHandler.java
deleted file mode 100644 (file)
index 052b6ff..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-package eu.etaxonomy.taxeditor.editor.handler;
-
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IEditorPart;
-
-import eu.etaxonomy.taxeditor.editor.molecular.AlignmentEditor;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
-import eu.etaxonomy.taxeditor.model.MessagingUtils;
-
-
-
-public class AddAHandler extends AbstractHandler {
-    /* (non-Javadoc)
-     * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-     */
-    @Override
-    public Object execute(ExecutionEvent event) throws ExecutionException {
-        IEditorPart activeEditor = AbstractUtility.getActiveEditor();
-        if(activeEditor instanceof AlignmentEditor){
-            AlignmentEditor alignmentEditor = (AlignmentEditor) activeEditor;
-//            alignmentEditor.getAlignmentArea().getSelection()
-        }
-        MessagingUtils.informationDialog("Added A", "Added A");
-        return null;  // Reserved for future use
-    }
-
-
-}
index 3efa522e0c3a333e37757ac505ed05510a164ca5..24b42d45207c9ef02d56146c97d3eb1cbaddcbf8 100644 (file)
 package eu.etaxonomy.taxeditor.editor.molecular;
 
 
-import info.bioinfweb.commons.bio.biojava3.alignment.SimpleAlignment;
-import info.bioinfweb.commons.bio.biojava3.alignment.template.Alignment;
-import info.bioinfweb.commons.bio.biojava3.core.sequence.compound.AlignmentAmbiguityNucleotideCompoundSet;
 import info.bioinfweb.libralign.AlignmentArea;
 import info.bioinfweb.libralign.AlignmentContentArea;
-import info.bioinfweb.libralign.dataarea.implementations.ConsensusSequenceArea;
 import info.bioinfweb.libralign.dataarea.implementations.SequenceIndexArea;
 import info.bioinfweb.libralign.dataarea.implementations.pherogram.PherogramArea;
 import info.bioinfweb.libralign.pherogram.BioJavaPherogramProvider;
-import info.bioinfweb.libralign.pherogram.PherogramProvider;
-import info.bioinfweb.libralign.pherogram.ReverseComplementPherogramProvider;
 import info.bioinfweb.libralign.sequenceprovider.SequenceDataProvider;
-import info.bioinfweb.libralign.sequenceprovider.implementations.BioJavaSequenceDataProvider;
 import info.bioinfweb.libralign.sequenceprovider.implementations.PackedSequenceDataProvider;
 import info.bioinfweb.libralign.sequenceprovider.tokenset.BioJavaTokenSet;
 import info.bioinfweb.libralign.sequenceprovider.tokenset.TokenSet;
@@ -30,12 +23,12 @@ import info.bioinfweb.libralign.sequenceprovider.tokenset.TokenSet;
 import java.io.File;
 
 import org.biojava.bio.chromatogram.ChromatogramFactory;
-import org.biojava3.core.sequence.DNASequence;
 import org.biojava3.core.sequence.compound.DNACompoundSet;
 import org.biojava3.core.sequence.compound.NucleotideCompound;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IActionBars;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
 import org.eclipse.ui.PartInitException;
@@ -57,55 +50,57 @@ public class AlignmentEditor extends EditorPart {
     public static final String ID = "eu.etaxonomy.taxeditor.editor.molecular.AlignmentEditor";
 
     private AlignmentArea readsArea;
+    private boolean isOverwriteMode;
+    private boolean isRightInsertion;
 
 
        private AlignmentArea createReadsArea() {
                try {
                        AlignmentArea result = new AlignmentArea();
                        AlignmentContentArea contentArea = result.getContentArea();
-                       
+
                        TokenSet<NucleotideCompound> tokenSet = new BioJavaTokenSet<NucleotideCompound>(new DNACompoundSet(), true);
                        SequenceDataProvider<NucleotideCompound> provider = new PackedSequenceDataProvider<NucleotideCompound>(tokenSet);
-                       
+
                        // Add index area:
                        contentArea.getDataAreas().getTopAreas().add(new SequenceIndexArea(contentArea));
-                       
-                       
+
+
                        // First test sequence with pherogram:
                        provider.addSequence("Read 1");
                        int id = provider.sequenceIDByName("Read 1");
                        BioJavaPherogramProvider pherogramProvider = new BioJavaPherogramProvider(ChromatogramFactory.create(
                        new File("D:/Users/BenStoever/Documents/Studium/Projekte/Promotion/EDITor/Quelltexte/LibrAlign branch/Repository/eu.etaxonomy.taxeditor.editor/src/main/resources/AlignmentTestData/JR430_JR-P01.ab1")));
-                       //new File("/home/pplitzner/svn/LibrAlign/taxeditor/eu.etaxonomy.taxeditor.editor/src/main/resources/AlignmentTestData/JR430_JR-P01.ab1")));
-                       
+//                     new File("/home/pplitzner/svn/LibrAlign/taxeditor/eu.etaxonomy.taxeditor.editor/src/main/resources/AlignmentTestData/JR430_JR-P01.ab1")));
+
                        // Copy base call sequence into alignment:
                        for (int i = 0; i < pherogramProvider.getSequenceLength(); i++) {
                                provider.insertTokenAt(id, i, tokenSet.tokenByKeyChar(pherogramProvider.getBaseCall(i).getUpperedBase().charAt(0)));
                        }
-                       
+
                        // Add data area:
                        PherogramArea pherogramArea = new PherogramArea(result.getContentArea(), pherogramProvider);
                        result.getContentArea().getDataAreas().getSequenceAreas(id).add(pherogramArea);
-                       
+
 
                        // Second test sequence with pherogram:
                        provider.addSequence("Read 2");
                        id = provider.sequenceIDByName("Read 2");
                        pherogramProvider = new BioJavaPherogramProvider(ChromatogramFactory.create(
                        new File("D:/Users/BenStoever/Documents/Studium/Projekte/Promotion/EDITor/Quelltexte/LibrAlign branch/Repository/eu.etaxonomy.taxeditor.editor/src/main/resources/AlignmentTestData/JR444_JR-P05.ab1")));
-                       //new File("/home/pplitzner/svn/LibrAlign/taxeditor/eu.etaxonomy.taxeditor.editor/src/main/resources/AlignmentTestData/JR444_JR-P05.ab1")));
+//                     new File("/home/pplitzner/svn/LibrAlign/taxeditor/eu.etaxonomy.taxeditor.editor/src/main/resources/AlignmentTestData/JR444_JR-P05.ab1")));
                        // Copy base call sequence into alignment:
                        for (int i = 0; i < pherogramProvider.getSequenceLength(); i++) {
                                provider.insertTokenAt(id, i, tokenSet.tokenByKeyChar(pherogramProvider.getBaseCall(i).getUpperedBase().charAt(0)));
                        }
-                       
+
                        // Add data area:
                        pherogramArea = new PherogramArea(result.getContentArea(), pherogramProvider);
                        result.getContentArea().getDataAreas().getSequenceAreas(id).add(pherogramArea);
-                       
-                       
+
+
                        contentArea.setSequenceProvider(provider, false);
-                       
+
                        return result;
                }
                catch (Exception e) {
@@ -126,9 +121,14 @@ public class AlignmentEditor extends EditorPart {
     public void createPartControl(Composite parent) {
        readsArea = createReadsArea();
                Composite alignmentWidget = readsArea.createSWTWidget(parent, SWT.NONE);
-               //getSite().setSelectionProvider(provider)
+               updateStatusBar();
     }
 
+    private void updateStatusBar(){
+        IActionBars bars = getEditorSite().getActionBars();
+           bars.getStatusLineManager().setMessage("Insertion Mode: " +
+                       (isRightInsertion?"Right":"Left")+" "+(isOverwriteMode?"Overwrite":"Insert"));
+    }
 
     /* (non-Javadoc)
      * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
@@ -139,7 +139,6 @@ public class AlignmentEditor extends EditorPart {
 
     }
 
-
     /* (non-Javadoc)
      * @see org.eclipse.ui.part.EditorPart#doSaveAs()
      */
@@ -149,7 +148,6 @@ public class AlignmentEditor extends EditorPart {
 
     }
 
-
     /* (non-Javadoc)
      * @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
      */
@@ -159,7 +157,6 @@ public class AlignmentEditor extends EditorPart {
         setInput(input);
     }
 
-
     /* (non-Javadoc)
      * @see org.eclipse.ui.part.EditorPart#isDirty()
      */
@@ -169,7 +166,6 @@ public class AlignmentEditor extends EditorPart {
         return false;
     }
 
-
     /* (non-Javadoc)
      * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
      */
@@ -179,7 +175,6 @@ public class AlignmentEditor extends EditorPart {
         return false;
     }
 
-
     /* (non-Javadoc)
      * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
      */
@@ -187,4 +182,22 @@ public class AlignmentEditor extends EditorPart {
     public void setFocus() {
        //alignmentArea.getToolkitComponent().redistributeHeight();
     }
-}
+
+    public boolean isOverwriteMode() {
+        return isOverwriteMode;
+    }
+
+    public boolean isRightInsertion() {
+        return isRightInsertion;
+    }
+
+    public void toggleLeftRightInsertion() {
+        isRightInsertion = !isRightInsertion;
+        updateStatusBar();
+    }
+
+    public void toggleInsertOverwrite() {
+        isOverwriteMode = !isOverwriteMode;
+        updateStatusBar();
+    }
+}
\ No newline at end of file
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/molecular/ToggleInsertOverwriteButton.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/molecular/ToggleInsertOverwriteButton.java
new file mode 100644 (file)
index 0000000..b72fbb1
--- /dev/null
@@ -0,0 +1,58 @@
+// $Id$
+/**
+* Copyright (C) 2014 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.editor.molecular;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
+
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+
+/**
+ * @author pplitzner
+ * @date Nov 5, 2014
+ *
+ */
+public class ToggleInsertOverwriteButton extends WorkbenchWindowControlContribution {
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.action.ControlContribution#createControl(org.eclipse.swt.widgets.Composite)
+     */
+    @Override
+    protected Control createControl(Composite parent) {
+        Button button = new Button(parent, SWT.TOGGLE);
+//        button.setImage(ImageResources.getImage(ImageResources.SWAP_SYNONYM_AND_TAXON_ICON));
+        button.setText("Toggle Insert/Overwrite");
+        button.setToolTipText("Toggle Insert/Overwrite");
+        button.addListener(SWT.Selection, new Listener() {
+
+            @Override
+            public void handleEvent(Event event) {
+                IEditorPart activeEditor = AbstractUtility.getActiveEditor();
+                if (activeEditor instanceof AlignmentEditor) {
+                    AlignmentEditor alignmentEditor = (AlignmentEditor)activeEditor;
+                    alignmentEditor.toggleInsertOverwrite();
+                }
+            }
+        });
+
+        IEditorPart activeEditor = AbstractUtility.getActiveEditor();
+        if (activeEditor instanceof AlignmentEditor) {
+            AlignmentEditor alignmentEditor = (AlignmentEditor)activeEditor;
+            button.setSelection(alignmentEditor.isOverwriteMode());
+        }
+        return button;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/molecular/ToggleLeftRightInsertionButton.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/molecular/ToggleLeftRightInsertionButton.java
new file mode 100644 (file)
index 0000000..46580fe
--- /dev/null
@@ -0,0 +1,57 @@
+// $Id$
+/**
+* Copyright (C) 2014 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.editor.molecular;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
+
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+
+/**
+ * @author pplitzner
+ * @date Nov 5, 2014
+ *
+ */
+public class ToggleLeftRightInsertionButton extends WorkbenchWindowControlContribution {
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.action.ControlContribution#createControl(org.eclipse.swt.widgets.Composite)
+     */
+    @Override
+    protected Control createControl(Composite parent) {
+        final Button button = new Button(parent, SWT.TOGGLE);
+//        button.setImage(ImageResources.getImage(ImageResources.SWAP_SYNONYM_AND_TAXON_ICON));
+        button.setText("Toggle Left/Right Insertion");
+        button.setToolTipText("Toggle Left/Right Insertion");
+        button.addListener(SWT.Selection, new Listener() {
+            @Override
+            public void handleEvent(Event event) {
+                IEditorPart activeEditor = AbstractUtility.getActiveEditor();
+                if (activeEditor instanceof AlignmentEditor) {
+                    AlignmentEditor alignmentEditor = (AlignmentEditor)activeEditor;
+                    alignmentEditor.toggleLeftRightInsertion();
+                }
+            }
+        });
+
+        IEditorPart activeEditor = AbstractUtility.getActiveEditor();
+        if (activeEditor instanceof AlignmentEditor) {
+            AlignmentEditor alignmentEditor = (AlignmentEditor)activeEditor;
+            button.setSelection(alignmentEditor.isRightInsertion());
+        }
+        return button;
+    }
+}