/*\r
* Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
*\r
* This program is free software; you can redistribute it and/or\r
* modify it under the terms of the GNU General Public License\r
this.addKeyListener(this);\r
alignPanel.seqPanel.seqCanvas.addKeyListener(this);\r
alignPanel.idPanel.idCanvas.addKeyListener(this);\r
+ alignPanel.scalePanel.addKeyListener(this);\r
+ alignPanel.annotationPanel.addKeyListener(this);\r
\r
viewport.addPropertyChangeListener(new java.beans.PropertyChangeListener()\r
{\r
case KeyEvent.VK_SPACE:\r
if(viewport.cursorMode)\r
{\r
- alignPanel.seqPanel.insertGapAtCursor(evt.isControlDown());\r
+ alignPanel.seqPanel.insertGapAtCursor(evt.isControlDown()\r
+ || evt.isShiftDown()\r
+ || evt.isAltDown()\r
+ );\r
}\r
break;\r
\r
case KeyEvent.VK_BACK_SPACE:\r
if(viewport.cursorMode)\r
{\r
- alignPanel.seqPanel.deleteGapAtCursor(evt.isControlDown());\r
+ alignPanel.seqPanel.deleteGapAtCursor(evt.isControlDown()\r
+ || evt.isShiftDown()\r
+ || evt.isAltDown()\r
+ );\r
}\r
else\r
{\r
findMenuItem_actionPerformed();\r
}\r
break;\r
+ case KeyEvent.VK_H:\r
+ {\r
+ boolean toggleSeqs = !evt.isControlDown();\r
+ boolean toggleCols = !evt.isShiftDown();\r
+ boolean hide = false;\r
+ SequenceGroup sg = viewport.getSelectionGroup();\r
+\r
+ if(toggleSeqs)\r
+ {\r
+ if (sg != null && sg.getSize(false) != viewport.alignment.getHeight())\r
+ {\r
+ hide = true;\r
+ viewport.hideAllSelectedSeqs();\r
+ }\r
+ else if (!(toggleCols && viewport.colSel.getSelected().size() > 0))\r
+ viewport.showAllHiddenSeqs();\r
+ }\r
+\r
+ if(toggleCols)\r
+ {\r
+ if (viewport.colSel.getSelected().size() > 0)\r
+ {\r
+ viewport.hideSelectedColumns();\r
+ if(!toggleSeqs)\r
+ viewport.selectionGroup = sg;\r
+ }\r
+ else if (!hide)\r
+ viewport.showAllHiddenColumns();\r
+ }\r
+\r
+ alignPanel.repaint();\r
+ break;\r
+ }\r
+\r
}\r
}\r
public void keyReleased(KeyEvent evt)\r
}\r
public void actionPerformed(ActionEvent evt)\r
{\r
- if(evt.getSource()==inputText)\r
+ Object source = evt.getSource();\r
+\r
+ if(source==inputText)\r
inputText_actionPerformed();\r
- else if(evt.getSource()==loadTree)\r
+ else if(source==loadTree)\r
loadTree_actionPerformed();\r
- else if(evt.getSource()==loadApplication)\r
+ else if(source==loadApplication)\r
launchFullApplication();\r
- else if(evt.getSource()==closeMenuItem)\r
+ else if(source==closeMenuItem)\r
closeMenuItem_actionPerformed();\r
- else if(evt.getSource()==copy)\r
+ else if(source==copy)\r
copy_actionPerformed();\r
- else if(evt.getSource()==undoMenuItem)\r
+ else if(source==undoMenuItem)\r
undoMenuItem_actionPerformed();\r
- else if(evt.getSource()==redoMenuItem)\r
+ else if(source==redoMenuItem)\r
redoMenuItem_actionPerformed();\r
- else if(evt.getSource()==inputText)\r
+ else if(source==inputText)\r
inputText_actionPerformed();\r
- else if(evt.getSource()==closeMenuItem)\r
+ else if(source==closeMenuItem)\r
closeMenuItem_actionPerformed();\r
- else if(evt.getSource()==undoMenuItem)\r
+ else if(source==undoMenuItem)\r
undoMenuItem_actionPerformed();\r
- else if(evt.getSource()==redoMenuItem)\r
+ else if(source==redoMenuItem)\r
redoMenuItem_actionPerformed();\r
- else if(evt.getSource()==copy)\r
+ else if(source==copy)\r
copy_actionPerformed();\r
- else if(evt.getSource()==pasteNew)\r
+ else if(source==pasteNew)\r
pasteNew_actionPerformed();\r
- else if(evt.getSource()==pasteThis)\r
+ else if(source==pasteThis)\r
pasteThis_actionPerformed();\r
- else if(evt.getSource()==cut)\r
+ else if(source==cut)\r
cut_actionPerformed();\r
- else if(evt.getSource()==delete)\r
+ else if(source==delete)\r
delete_actionPerformed();\r
- else if(evt.getSource()==deleteGroups)\r
+ else if(source==deleteGroups)\r
deleteGroups_actionPerformed();\r
- else if(evt.getSource()==selectAllSequenceMenuItem)\r
+ else if(source==selectAllSequenceMenuItem)\r
selectAllSequenceMenuItem_actionPerformed();\r
- else if(evt.getSource()==deselectAllSequenceMenuItem)\r
+ else if(source==deselectAllSequenceMenuItem)\r
deselectAllSequenceMenuItem_actionPerformed();\r
- else if(evt.getSource()==invertSequenceMenuItem)\r
+ else if(source==invertSequenceMenuItem)\r
invertSequenceMenuItem_actionPerformed();\r
- else if(evt.getSource()==remove2LeftMenuItem)\r
+ else if(source==invertColSel)\r
+ { viewport.invertColumnSelection(); alignPanel.repaint(); }\r
+ else if(source==remove2LeftMenuItem)\r
remove2LeftMenuItem_actionPerformed();\r
- else if(evt.getSource()==remove2RightMenuItem)\r
+ else if(source==remove2RightMenuItem)\r
remove2RightMenuItem_actionPerformed();\r
- else if(evt.getSource()==removeGappedColumnMenuItem)\r
+ else if(source==removeGappedColumnMenuItem)\r
removeGappedColumnMenuItem_actionPerformed();\r
- else if(evt.getSource()==removeAllGapsMenuItem)\r
+ else if(source==removeAllGapsMenuItem)\r
removeAllGapsMenuItem_actionPerformed();\r
- else if(evt.getSource()==findMenuItem)\r
+ else if(source==findMenuItem)\r
findMenuItem_actionPerformed();\r
- else if(evt.getSource()==font)\r
+ else if(source==font)\r
font_actionPerformed();\r
- else if(evt.getSource()==featureSettings)\r
+ else if(source==showColumns)\r
+ {\r
+ viewport.showAllHiddenColumns(); alignPanel.repaint();\r
+ }\r
+ else if(source==showSeqs)\r
+ {\r
+ viewport.showAllHiddenSeqs();\r
+ }\r
+ else if(source == hideColumns)\r
+ {\r
+ viewport.hideSelectedColumns(); alignPanel.repaint();\r
+ }\r
+ else if(source == hideSequences && viewport.getSelectionGroup()!=null)\r
+ {\r
+ viewport.hideAllSelectedSeqs();\r
+ }\r
+ else if(source==featureSettings)\r
featureSettings_actionPerformed();\r
- else if(evt.getSource()==overviewMenuItem)\r
+ else if(source==overviewMenuItem)\r
overviewMenuItem_actionPerformed();\r
- else if(evt.getSource()==noColourmenuItem)\r
+ else if(source==noColourmenuItem)\r
noColourmenuItem_actionPerformed();\r
- else if(evt.getSource()==clustalColour)\r
+ else if(source==clustalColour)\r
clustalColour_actionPerformed();\r
- else if(evt.getSource()==zappoColour)\r
+ else if(source==zappoColour)\r
zappoColour_actionPerformed();\r
- else if(evt.getSource()==taylorColour)\r
+ else if(source==taylorColour)\r
taylorColour_actionPerformed();\r
- else if(evt.getSource()==hydrophobicityColour)\r
+ else if(source==hydrophobicityColour)\r
hydrophobicityColour_actionPerformed();\r
- else if(evt.getSource()==helixColour)\r
+ else if(source==helixColour)\r
helixColour_actionPerformed();\r
- else if(evt.getSource()==strandColour)\r
+ else if(source==strandColour)\r
strandColour_actionPerformed();\r
- else if(evt.getSource()==turnColour)\r
+ else if(source==turnColour)\r
turnColour_actionPerformed();\r
- else if(evt.getSource()==buriedColour)\r
+ else if(source==buriedColour)\r
buriedColour_actionPerformed();\r
- else if(evt.getSource()==nucleotideColour)\r
+ else if(source==nucleotideColour)\r
nucleotideColour_actionPerformed();\r
- else if(evt.getSource()==modifyPID)\r
+ else if(source==modifyPID)\r
modifyPID_actionPerformed();\r
- else if(evt.getSource()==modifyConservation)\r
+ else if(source==modifyConservation)\r
modifyConservation_actionPerformed();\r
- else if(evt.getSource()==userDefinedColour)\r
+ else if(source==userDefinedColour)\r
userDefinedColour_actionPerformed();\r
- else if(evt.getSource()==PIDColour)\r
+ else if(source==PIDColour)\r
PIDColour_actionPerformed();\r
- else if(evt.getSource()==BLOSUM62Colour)\r
+ else if(source==BLOSUM62Colour)\r
BLOSUM62Colour_actionPerformed();\r
- else if(evt.getSource()==annotationColour)\r
+ else if(source==annotationColour)\r
new AnnotationColourChooser(viewport, alignPanel);\r
- else if(evt.getSource()==sortPairwiseMenuItem)\r
+ else if(source==sortPairwiseMenuItem)\r
sortPairwiseMenuItem_actionPerformed();\r
- else if(evt.getSource()==sortIDMenuItem)\r
+ else if(source==sortIDMenuItem)\r
sortIDMenuItem_actionPerformed();\r
- else if(evt.getSource()==sortGroupMenuItem)\r
+ else if(source==sortGroupMenuItem)\r
sortGroupMenuItem_actionPerformed();\r
- else if(evt.getSource()==removeRedundancyMenuItem)\r
+ else if(source==removeRedundancyMenuItem)\r
removeRedundancyMenuItem_actionPerformed();\r
- else if(evt.getSource()==pairwiseAlignmentMenuItem)\r
+ else if(source==pairwiseAlignmentMenuItem)\r
pairwiseAlignmentMenuItem_actionPerformed();\r
- else if(evt.getSource()==PCAMenuItem)\r
+ else if(source==PCAMenuItem)\r
PCAMenuItem_actionPerformed();\r
- else if(evt.getSource()==averageDistanceTreeMenuItem)\r
+ else if(source==averageDistanceTreeMenuItem)\r
averageDistanceTreeMenuItem_actionPerformed();\r
- else if(evt.getSource()==neighbourTreeMenuItem)\r
+ else if(source==neighbourTreeMenuItem)\r
neighbourTreeMenuItem_actionPerformed();\r
- else if(evt.getSource()==njTreeBlosumMenuItem)\r
+ else if(source==njTreeBlosumMenuItem)\r
njTreeBlosumMenuItem_actionPerformed();\r
- else if(evt.getSource()==avDistanceTreeBlosumMenuItem)\r
+ else if(source==avDistanceTreeBlosumMenuItem)\r
avTreeBlosumMenuItem_actionPerformed();\r
- else if(evt.getSource()==documentation)\r
+ else if(source==documentation)\r
documentation_actionPerformed();\r
- else if(evt.getSource()==about)\r
+ else if(source==about)\r
about_actionPerformed();\r
\r
}\r
url.append( appendProtocol( viewport.applet.getParameter("features") ) );\r
}\r
\r
+ if(viewport.applet.getParameter("annotations")!=null)\r
+ {\r
+ url.append( "&annotations=" );\r
+ url.append( appendProtocol( viewport.applet.getParameter("annotations") ) );\r
+ }\r
+\r
+ if(viewport.applet.getParameter("jnetfile")!=null)\r
+ {\r
+ url.append( "&annotations=" );\r
+ url.append( appendProtocol( viewport.applet.getParameter("jnetfile") ) );\r
+ }\r
+\r
if(viewport.applet.getParameter("defaultColour")!=null)\r
{\r
url.append("&colour=" +\r
public void addHistoryItem(HistoryItem hi)\r
{\r
historyList.push(hi);\r
+ redoList.removeAllElements();\r
updateEditMenuBar();\r
}\r
\r
protected void undoMenuItem_actionPerformed()\r
{\r
- HistoryItem hi = (HistoryItem) historyList.pop();\r
- redoList.push(new HistoryItem(hi.getDescription(), viewport.alignment,\r
+ HistoryItem nh,hi = (HistoryItem) historyList.pop();\r
+ redoList.push(nh=new HistoryItem(hi.getDescription(), viewport.alignment,\r
HistoryItem.HIDE));\r
+ if (hi.alColumnChanges!=null)\r
+ nh.alColumnChanges=hi.alColumnChanges.getInverse();\r
restoreHistoryItem(hi);\r
viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
}\r
\r
protected void redoMenuItem_actionPerformed()\r
{\r
- HistoryItem hi = (HistoryItem) redoList.pop();\r
+ HistoryItem nh,hi = (HistoryItem) redoList.pop();\r
+ historyList.push(nh=new HistoryItem(hi.getDescription(), viewport.alignment,\r
+ HistoryItem.HIDE));\r
+ if (hi.alColumnChanges!=null)\r
+ nh.alColumnChanges=hi.alColumnChanges.getInverse();\r
restoreHistoryItem(hi);\r
updateEditMenuBar();\r
viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
// used by undo and redo\r
void restoreHistoryItem(HistoryItem hi)\r
{\r
- hi.restore();\r
-\r
+ hi.restore(viewport.getColumnSelection());\r
updateEditMenuBar();\r
\r
viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
alignPanel.repaint();\r
}\r
\r
- StringBuffer copiedSequences;\r
+ static StringBuffer copiedSequences;\r
+ static Vector copiedHiddenColumns;\r
protected void copy_actionPerformed()\r
{\r
if (viewport.getSelectionGroup() == null)\r
int index = 0, startRes, endRes;\r
char ch;\r
\r
+ if (viewport.hasHiddenColumns && viewport.getSelectionGroup() != null)\r
+ {\r
+ copiedHiddenColumns = new Vector();\r
+ int hiddenOffset = viewport.getSelectionGroup().getStartRes();\r
+ for (int i = 0; i < viewport.getColumnSelection().getHiddenColumns().size();\r
+ i++)\r
+ {\r
+ int[] region = (int[])\r
+ viewport.getColumnSelection().getHiddenColumns().elementAt(i);\r
+\r
+ copiedHiddenColumns.addElement(new int[]\r
+ {region[0] - hiddenOffset,\r
+ region[1] - hiddenOffset});\r
+ }\r
+ }\r
+ else\r
+ copiedHiddenColumns = null;\r
+\r
+\r
for (int i = 0; i < sg.getSize(false); i++)\r
{\r
SequenceI seq = null;\r
viewport.applet,\r
newtitle,\r
false);\r
+ if (copiedHiddenColumns != null)\r
+ {\r
+ for (int i = 0; i < copiedHiddenColumns.size(); i++)\r
+ {\r
+ int[] region = (int[]) copiedHiddenColumns.elementAt(i);\r
+ af.viewport.hideColumns(region[0], region[1]);\r
+ }\r
+ }\r
+\r
\r
jalview.bin.JalviewLite.addFrame(af, newtitle, NEW_WINDOW_WIDTH,\r
NEW_WINDOW_HEIGHT);\r
ColumnSelection colSel = viewport.getColumnSelection();\r
if (colSel.size() > 0)\r
{\r
- addHistoryItem(new HistoryItem("Remove Left", viewport.alignment,\r
+ HistoryItem edit;\r
+ addHistoryItem(edit=new HistoryItem("Remove Left", viewport.alignment,\r
HistoryItem.HIDE));\r
int min = colSel.getMin();\r
viewport.getAlignment().trimLeft(min);\r
colSel.compensateForEdit(0, min);\r
-\r
+ edit.addShift(0, min);\r
if (viewport.getSelectionGroup() != null)\r
{\r
viewport.getSelectionGroup().adjustForRemoveLeft(min);\r
HistoryItem.HIDE));\r
int max = colSel.getMax();\r
viewport.getAlignment().trimRight(max);\r
+\r
if (viewport.getSelectionGroup() != null)\r
{\r
viewport.getSelectionGroup().adjustForRemoveRight(max);\r
\r
public void removeGappedColumnMenuItem_actionPerformed()\r
{\r
- addHistoryItem(new HistoryItem("Remove Gapped Columns",\r
+ HistoryItem edit;\r
+ addHistoryItem(edit=new HistoryItem("Remove Gapped Columns",\r
viewport.alignment,\r
HistoryItem.HIDE));\r
\r
\r
public void removeAllGapsMenuItem_actionPerformed()\r
{\r
- addHistoryItem(new HistoryItem("Remove Gaps", viewport.alignment,\r
+ // TODO: hidden regions should not be touched by removeAllGaps - a minimal number of gaps will remain in alignment segments containing uneven length subsequences\r
+ // TODO: columnSelection.compensateforedits should be called (and passed to history item)\r
+ HistoryItem editgaps;\r
+ addHistoryItem(editgaps=new HistoryItem("Remove Gaps", viewport.alignment,\r
HistoryItem.HIDE));\r
\r
//This is to maintain viewport position on first residue\r
int startRes = seq.findPosition(viewport.startRes);\r
\r
SequenceI current;\r
- int jSize;\r
-\r
Vector seqs=null;\r
\r
int start=0, end = viewport.alignment.getWidth();\r
else\r
seqs = viewport.alignment.getSequences();\r
\r
+ /* Commented out regions below are partial implementation of todo above.\r
+ * divide start,end into visible chunks, and for each:\r
+ int diff=end-start+1;\r
+ int diffmax=0;\r
+ int dr[] = new int[seqs.size()];\r
+ */\r
for (int i = 0; i < seqs.size(); i++)\r
{\r
current = (SequenceI) seqs.elementAt(i);\r
- jSize = current.getLength();\r
-\r
- // Removing a range is much quicker than removing gaps\r
- // one by one for long sequences\r
- int j = start;\r
- int rangeStart=-1, rangeEnd=-1;\r
-\r
- do\r
- {\r
- if (jalview.util.Comparison.isGap(current.getCharAt(j)))\r
- {\r
- if(rangeStart==-1)\r
- {\r
- rangeStart = j;\r
- rangeEnd = j+1;\r
- }\r
- else\r
- {\r
- rangeEnd++;\r
- }\r
- j++;\r
- }\r
- else\r
- {\r
- if(rangeStart>-1)\r
- {\r
- current.deleteChars(rangeStart, rangeEnd);\r
- j-=rangeEnd-rangeStart;\r
- jSize-=rangeEnd-rangeStart;\r
- rangeStart = -1;\r
- rangeEnd = -1;\r
- }\r
- else\r
- j++;\r
- }\r
- }\r
- while (j < end && j < jSize);\r
- if(rangeStart>-1)\r
- {\r
- current.deleteChars(rangeStart, rangeEnd);\r
- }\r
+ //dr[i]=\r
+ current.removeGaps(start, end);\r
+ /*if (d<diff) // can only shift\r
+ diff=d;\r
+ if (diffmax<d)\r
+ diffmax=d;\r
+ */\r
}\r
+ /* // after the end of each chunk -\r
+ * if (diff>0) {\r
+ // record shift for history.\r
+ editgaps.addShift(start, diff);\r
+ if (viewport.hasHiddenColumns && diffmax>diff) {\r
+ // pad sequence\r
+ StringBuffer gaps=new StringBuffer(diffmax);\r
+ for (int i=0,j=diffmax-diff; i<j; i++)\r
+ gaps.append(viewport.getGapCharacter());\r
+ for (int i=0, j=seqs.size(); i<j; i++) {\r
+ current = (SequenceI) seqs.elementAt(i);\r
+ if (dr[i]-diff>0) {\r
+ String sq = current.getSequence();\r
+ current.setSequence(sq.substring(0, hcend-dr[i])+gaps.substring(0, dr[i]-diff)+sq.substring());\r
+ }\r
+ }\r
+ }\r
+ }*/\r
+\r
viewport.setStartRes(seq.findIndex(startRes)-1);\r
viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
}\r
alignPanel.repaint();\r
}\r
\r
+\r
protected void scaleAbove_actionPerformed()\r
{\r
viewport.setScaleAboveWrapped(scaleAbove.getState());\r
\r
public void pairwiseAlignmentMenuItem_actionPerformed()\r
{\r
- if (viewport.getSelectionGroup().getSize(false) > 1)\r
+ if (viewport.getSelectionGroup()!=null\r
+ && viewport.getSelectionGroup().getSize(false) > 1)\r
{\r
Frame frame = new Frame();\r
frame.add(new PairwiseAlignPanel(alignPanel));\r
\r
}\r
\r
- final TreePanel tp = new TreePanel(viewport,\r
- type,\r
- pwType);\r
+ if ( (viewport.getSelectionGroup() != null &&\r
+ viewport.getSelectionGroup().getSize(false) > 1)\r
+ || (viewport.getSelectionGroup() == null\r
+ && viewport.alignment.getHeight() > 1))\r
+ {\r
+ final TreePanel tp = new TreePanel(viewport,\r
+ type,\r
+ pwType);\r
\r
- addTreeMenuItem(tp, title);\r
+ addTreeMenuItem(tp, title);\r
\r
- jalview.bin.JalviewLite.addFrame(tp, title, 600, 500);\r
+ jalview.bin.JalviewLite.addFrame(tp, title, 600, 500);\r
+ }\r
}\r
\r
void loadTree_actionPerformed()\r
MenuItem item;\r
\r
// dynamically fill save as menu with available formats\r
- for (int i = 0; i < jalview.io.AppletFormatAdapter.formats.size(); i++)\r
+ for (int i = 0; i < jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS.length; i++)\r
{\r
\r
- item = new MenuItem( (String) jalview.io.AppletFormatAdapter.formats.\r
- elementAt(\r
- i));\r
+ item = new MenuItem( jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS[i]);\r
+\r
item.addActionListener(new java.awt.event.ActionListener()\r
{\r
public void actionPerformed(ActionEvent e)\r
sequenceFeatures.setState(false);\r
annotationColour.setLabel("by Annotation...");\r
annotationColour.addActionListener(this);\r
+ invertSequenceMenuItem.setLabel("Invert Sequence Selection");\r
+ invertColSel.setLabel("Invert Column Selection");\r
+ menu1.setLabel("Show");\r
+ showColumns.setLabel("All Columns ");\r
+ showSeqs.setLabel("All Sequences");\r
+ menu2.setLabel("Hide");\r
+ hideColumns.setLabel("Selected Columns");\r
+ hideSequences.setLabel("Selected Sequences");\r
+ invertColSel.addActionListener(this);\r
+ showColumns.addActionListener(this);\r
+ showSeqs.addActionListener(this);\r
+ hideColumns.addActionListener(this);\r
+ hideSequences.addActionListener(this);\r
+\r
\r
alignFrameMenuBar.add(fileMenu);\r
alignFrameMenuBar.add(editMenu);\r
editMenu.add(selectAllSequenceMenuItem);\r
editMenu.add(deselectAllSequenceMenuItem);\r
editMenu.add(invertSequenceMenuItem);\r
- editMenu.add(deleteGroups);\r
+ editMenu.add(invertColSel);\r
+ editMenu.add(deleteGroups);\r
editMenu.addSeparator();\r
editMenu.add(remove2LeftMenuItem);\r
editMenu.add(remove2RightMenuItem);\r
searchMenu.add(findMenuItem);\r
viewMenu.add(font);\r
viewMenu.addSeparator();\r
- viewMenu.add(seqLimits);\r
- viewMenu.addSeparator();\r
+ viewMenu.add(menu1);\r
+ viewMenu.add(menu2);\r
+ viewMenu.addSeparator();\r
viewMenu.add(wrapMenuItem);\r
viewMenu.add(scaleAbove);\r
viewMenu.add(scaleLeft);\r
viewMenu.add(scaleRight);\r
viewMenu.addSeparator();\r
+ viewMenu.add(seqLimits);\r
viewMenu.add(viewBoxesMenuItem);\r
viewMenu.add(viewTextMenuItem);\r
viewMenu.add(colourTextMenuItem);\r
calculate.add(njTreeBlosumMenuItem);\r
helpMenu.add(documentation);\r
helpMenu.add(about);\r
+ menu1.add(showColumns);\r
+ menu1.add(showSeqs);\r
+ menu2.add(hideColumns);\r
+ menu2.add(hideSequences);\r
}\r
\r
public void setEmbedded()\r
MenuItem featureSettings = new MenuItem();\r
CheckboxMenuItem sequenceFeatures = new CheckboxMenuItem();\r
MenuItem annotationColour = new MenuItem();\r
+ MenuItem invertColSel = new MenuItem();\r
+ Menu menu1 = new Menu();\r
+ MenuItem showColumns = new MenuItem();\r
+ MenuItem showSeqs = new MenuItem();\r
+ Menu menu2 = new Menu();\r
+ MenuItem hideColumns = new MenuItem();\r
+ MenuItem hideSequences = new MenuItem();\r
\r
public void mousePressed(MouseEvent evt)\r
{\r