X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPopupMenu.java;h=e11830ccb0c15d1c290c006cc6d6ac4961294584;hb=012fc200ee0d124003524855ac7cd50be4b7456c;hp=018c1c2212e3b5bf06b34c782e8ec395a44225bd;hpb=5eedbb315e861ef49368574842d8a8788b4231b4;p=jalview.git diff --git a/src/jalview/gui/PopupMenu.java b/src/jalview/gui/PopupMenu.java index 018c1c2..e11830c 100755 --- a/src/jalview/gui/PopupMenu.java +++ b/src/jalview/gui/PopupMenu.java @@ -1,6 +1,6 @@ /* * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -77,11 +77,12 @@ public class PopupMenu extends JPopupMenu JMenuItem upperCase = new JMenuItem(); JMenuItem lowerCase = new JMenuItem(); JMenuItem toggle = new JMenuItem(); - JMenu outputMenu = new JMenu(); JMenu pdbMenu = new JMenu(); JMenuItem pdbFromFile = new JMenuItem(); JMenuItem enterPDB = new JMenuItem(); JMenuItem discoverPDB = new JMenuItem(); + JMenu outputMenu = new JMenu(); + JMenuItem sequenceFeature = new JMenuItem(); /** * Creates a new PopupMenu object. @@ -115,11 +116,10 @@ public class PopupMenu extends JPopupMenu colours.add(PIDColour); colours.add(BLOSUM62Colour); - for (int i = 0; i < jalview.io.FormatAdapter.formats.size(); i++) + for (int i = 0; i < jalview.io.FormatAdapter.WRITEABLE_FORMATS.length; i++) { - JMenuItem item = new JMenuItem( (String) jalview.io.FormatAdapter.formats. - elementAt( - i)); + JMenuItem item = new JMenuItem( jalview.io.FormatAdapter.WRITEABLE_FORMATS[i] ); + item.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) @@ -144,6 +144,9 @@ public class PopupMenu extends JPopupMenu if (seq != null) { + int start = Math.max(sequence.getName().length()-15, 0); + sequenceMenu.setText(sequence.getName().substring(start)); + JMenuItem menuItem; if( seq.getDatasetSequence().getPDBId() != null) { @@ -175,7 +178,7 @@ public class PopupMenu extends JPopupMenu hideSequences(false); } }); - sequenceMenu.add(menuItem); + add(menuItem); if(ap.av.getSelectionGroup() !=null && ap.av.getSelectionGroup().getSize(false)>1) @@ -198,18 +201,17 @@ public class PopupMenu extends JPopupMenu if (ap.av.adjustForHiddenSeqs(index) - ap.av.adjustForHiddenSeqs(index - 1) > 1) { - menuItem = new JMenuItem("Reveal"); + menuItem = new JMenuItem("Reveal Sequences"); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ap.av.showSequence(index); - ap.repaint(); if (ap.overviewPanel != null) ap.overviewPanel.updateOverviewImage(); } }); - sequenceMenu.add(menuItem); + add(menuItem); } menuItem = new JMenuItem("Reveal All"); @@ -218,16 +220,12 @@ public class PopupMenu extends JPopupMenu public void actionPerformed(ActionEvent e) { ap.av.showAllHiddenSeqs(); - ap.repaint(); if (ap.overviewPanel != null) ap.overviewPanel.updateOverviewImage(); - } + } }); - sequenceMenu.add(menuItem); - - - + add(menuItem); } @@ -309,10 +307,7 @@ public class PopupMenu extends JPopupMenu { unGroupMenuItem.setVisible(false); } - else - { - groupMenu.insertSeparator(3); - } + if (seq == null) { @@ -356,7 +351,10 @@ public class PopupMenu extends JPopupMenu linkMenu.add(item); } - add(linkMenu); + if(sequence!=null) + sequenceMenu.add(linkMenu); + else + add(linkMenu); } } @@ -369,7 +367,7 @@ public class PopupMenu extends JPopupMenu private void jbInit() throws Exception { groupMenu.setText("Group"); - groupMenu.setText("Group"); + groupMenu.setText("Selection"); groupName.setText("Name"); groupName.addActionListener(new java.awt.event.ActionListener() { @@ -481,7 +479,6 @@ public class PopupMenu extends JPopupMenu toggle_actionPerformed(e); } }); - outputMenu.setText("Output to Textbox..."); pdbMenu.setText("Associate Structure with Sequence"); pdbFromFile.setText("From File"); pdbFromFile.addActionListener(new ActionListener() @@ -507,24 +504,33 @@ public class PopupMenu extends JPopupMenu discoverPDB_actionPerformed(e); } }); + outputMenu.setText("Output to Textbox..."); + sequenceFeature.setText("Create Sequence Feature"); + sequenceFeature.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + sequenceFeature_actionPerformed(e); + } + }); add(groupMenu); - this.add(editMenu); - this.add(outputMenu); add(sequenceMenu); - this.add(pdbMenu); + groupMenu.add(editMenu); + groupMenu.add(outputMenu); + groupMenu.addSeparator(); + groupMenu.add(sequenceFeature); + groupMenu.addSeparator(); groupMenu.add(groupName); - groupMenu.addSeparator(); - groupMenu.add(unGroupMenuItem); + groupMenu.add(unGroupMenuItem); groupMenu.add(colourMenu); - groupMenu.addSeparator(); - groupMenu.add(showBoxes); + groupMenu.add(showBoxes); groupMenu.add(showText); groupMenu.add(showColourText); - groupMenu.addSeparator(); - groupMenu.add(outline); + groupMenu.add(outline); sequenceMenu.add(sequenceName); - colourMenu.add(noColourmenuItem); + sequenceMenu.add(pdbMenu); + colourMenu.add(noColourmenuItem); colourMenu.add(clustalColour); colourMenu.add(BLOSUM62Colour); colourMenu.add(PIDColour); @@ -693,7 +699,7 @@ public class PopupMenu extends JPopupMenu if (ap.overviewPanel != null) ap.overviewPanel.updateOverviewImage(); - ap.seqPanel.repaint(); + PaintRefresher.Refresh(this, ap.av.getSequenceSetId()); } /** @@ -847,6 +853,7 @@ public class PopupMenu extends JPopupMenu sg.cs = udc; } + refresh(); } /** * DOCUMENT ME! @@ -1131,27 +1138,32 @@ public class PopupMenu extends JPopupMenu SequenceGroup sg = ap.av.getSelectionGroup(); if(sg==null || sg.getSize(false)<1) { - ap.av.hideSequence(sequence); + ap.av.hideSequence(new SequenceI[]{sequence}); return; } + int gsize = sg.getSize(false); + SequenceI [] hseqs; + + hseqs = new SequenceI[ representGroup ? gsize-1 : gsize ]; + int index = 0; - while(index < sg.getSize(false)) + for(int i=0; i sg.getEndRes()) + end = sg.getEndRes() + 1; + } + + if (source == toggle) + ( (SequenceI) sg.getSequences(true).elementAt(g)) + .toggleCase(start, end); + else + ( (SequenceI) sg.getSequences(true).elementAt(g)) + .changeCase(source == upperCase, start, end); - ap.repaint(); + if (ap.av.hasHiddenColumns) + { + start = ap.av.colSel.adjustForHiddenColumns(end); + start = ap.av.colSel.getHiddenBoundaryLeft(start) + 1; + } + + } + while (end < sg.getEndRes()); + } + PaintRefresher.Refresh(this, ap.av.getSequenceSetId()); + } } public void outputText_actionPerformed(ActionEvent e) @@ -1279,18 +1304,6 @@ public class PopupMenu extends JPopupMenu public void enterPDB_actionPerformed(ActionEvent e) { - int size = (ap.av.getSelectionGroup() == null ? 0 : - ap.av.getSelectionGroup().getSize(false)); - - if (size == 0 || size > 1) - { - JOptionPane.showInternalMessageDialog( - Desktop.desktop, - "Select a single sequence to specify a PDB id for first", - "Select Single Selected", JOptionPane.WARNING_MESSAGE); - return; - } - String id = JOptionPane.showInternalInputDialog(Desktop.desktop, "Enter PDB Id", "Enter PDB Id", JOptionPane.QUESTION_MESSAGE); @@ -1298,7 +1311,7 @@ public class PopupMenu extends JPopupMenu { PDBEntry entry = new PDBEntry(); entry.setId(id); - ap.av.getSelectionGroup().getSequenceAt(0).getDatasetSequence() + sequence.getDatasetSequence() .addPDBId(entry); } } @@ -1308,4 +1321,31 @@ public class PopupMenu extends JPopupMenu new jalview.io.DBRefFetcher( ap.av.getAlignment(), ap.alignFrame).fetchDBRefs(false); } + + public void sequenceFeature_actionPerformed(ActionEvent e) + { + SequenceGroup sg = ap.av.getSelectionGroup(); + if(sg==null) + return; + + int gSize= sg.getSize(false); + SequenceI [] seqs = new SequenceI[gSize]; + SequenceFeature [] features = new SequenceFeature[gSize]; + + for (int i = 0; i < gSize; i++) + { + seqs[i] = sg.getSequenceAt(i).getDatasetSequence(); + int start = sg.getSequenceAt(i).findPosition(sg.getStartRes()); + int end = sg.findEndRes(sg.getSequenceAt(i)); + features[i] = new SequenceFeature(null,null, null,start,end,"Jalview"); + } + + if (ap.seqPanel.seqCanvas.getFeatureRenderer() + .createNewFeatures(seqs, features)) + { + ap.alignFrame.showSeqFeatures.setSelected(true); + ap.av.setShowSequenceFeatures(true); + ap.highlightSearchResults(null); + } + } }