import java.util.*;\r
\r
import java.awt.image.*;\r
+import javax.swing.JComboBox;\r
+import javax.swing.JPanel;\r
+import javax.swing.JLabel;\r
+import javax.swing.JOptionPane;\r
\r
\r
/**\r
}\r
\r
\r
- public void addNewFeature(String name, Color col, String group)\r
+ static String lastFeatureAdded = "feature_1";\r
+ static String lastSourceAdded = "Jalview";\r
+\r
+ public boolean createNewFeatures(SequenceI[] sequences,\r
+ SequenceFeature [] features)\r
{\r
\r
- setColour(name, col);\r
- if(av.featuresDisplayed==null)\r
- av.featuresDisplayed = new Hashtable();\r
+ JComboBox name = new JComboBox();\r
+ JComboBox source = new JComboBox();\r
+\r
+ JPanel panel = new JPanel(new GridLayout(2, 2));\r
+ panel.add(new JLabel("New Sequence Feature Name"));\r
+ panel.add(name);\r
+ panel.add(new JLabel("Source:"));\r
+ panel.add(source);\r
+ // name.setPreferredSize(new Dimension(300, 20));\r
+ name.setEditable(true);\r
+ source.setEditable(true);\r
+\r
+ Enumeration en;\r
+ if (av.featuresDisplayed != null)\r
+ {\r
+ en = av.featuresDisplayed.keys();\r
+ while (en.hasMoreElements())\r
+ {\r
+ name.addItem(en.nextElement().toString());\r
+ }\r
+ }\r
+\r
+ if (featureGroups != null)\r
+ {\r
+ en = featureGroups.keys();\r
+ while (en.hasMoreElements())\r
+ {\r
+ source.addItem(en.nextElement().toString());\r
+ }\r
+ }\r
+\r
+ name.setSelectedItem(lastFeatureAdded);\r
+ source.setSelectedItem(lastSourceAdded);\r
\r
- if(group == null)\r
- group = "NOGROUP";\r
+ int reply = JOptionPane.showInternalConfirmDialog(Desktop.desktop,\r
+ panel, "Create New Sequence Feature(s)",\r
+ JOptionPane.OK_CANCEL_OPTION);\r
+\r
+\r
+ if(reply==JOptionPane.OK_OPTION\r
+ && name.getSelectedItem()!=null\r
+ && source.getSelectedItem()!=null)\r
+ {\r
+ lastFeatureAdded = name.getSelectedItem().toString();\r
+ lastSourceAdded = source.getSelectedItem().toString();\r
+ for(int i=0; i<sequences.length; i++)\r
+ {\r
+ features[i].type = lastFeatureAdded;\r
+ features[i].featureGroup = lastSourceAdded;\r
+ sequences[i].addSequenceFeature(features[i]);\r
+ }\r
+\r
+ if (av.featuresDisplayed == null)\r
+ av.featuresDisplayed = new Hashtable();\r
+\r
+ if(featureGroups==null)\r
+ featureGroups = new Hashtable();\r
+\r
+ featureGroups.put(lastSourceAdded, new Boolean(true));\r
+\r
+ Color col = getColour(lastFeatureAdded);\r
+ if(col==null)\r
+ {\r
+ col = new Color(60, 160, 115);\r
+ setColour(lastFeatureAdded, col);\r
+ }\r
+\r
+ av.featuresDisplayed.put(lastSourceAdded, new Integer(col.getRGB()));\r
+ findAllFeatures();\r
+ return true;\r
+ }\r
+ else\r
+ return false;\r
\r
- av.featuresDisplayed.put(name, new Integer(col.getRGB()));\r
}\r
\r
public void setColour(String featureType, Color col)\r
panel.add(label, BorderLayout.NORTH);\r
panel.add(textinput, BorderLayout.SOUTH);\r
\r
- int reply = JOptionPane.showInternalConfirmDialog(Desktop.desktop,\r
- panel, "New Sequence Feature Name",\r
- JOptionPane.OK_CANCEL_OPTION );\r
\r
- if(reply != JOptionPane.OK_OPTION)\r
- return;\r
+ SequenceI [] seqs = new SequenceI[searchResults.getSize()];\r
+ SequenceFeature [] features = new SequenceFeature[searchResults.getSize()];\r
+\r
\r
for (int i = 0; i < searchResults.getSize(); i ++ )\r
{\r
- SequenceI seq = searchResults.getResultSequence(i);\r
+ seqs[i] = searchResults.getResultSequence(i).getDatasetSequence();\r
\r
- SequenceFeature sf = new SequenceFeature(textinput.getText(),\r
+ features[i] = new SequenceFeature(textinput.getText(),\r
"Search Results", null,\r
searchResults.getResultStart(i),\r
- searchResults.getResultEnd(i),\r
+ searchResults.getResultEnd(i),\r
"Search Results");\r
-\r
- ap.seqPanel.seqCanvas.getFeatureRenderer().addNewFeature(\r
- textinput.getText(), new Color(60,160,115),\r
- "Search Results");\r
-\r
- seq.getDatasetSequence().addSequenceFeature(sf);\r
}\r
\r
- ap.seqPanel.seqCanvas.getFeatureRenderer().findAllFeatures();\r
- ap.alignFrame.showSeqFeatures.setSelected(true);\r
- av.setShowSequenceFeatures(true);\r
- ap.highlightSearchResults(null);\r
+ if( ap.seqPanel.seqCanvas.getFeatureRenderer()\r
+ .createNewFeatures(seqs, features))\r
+ {\r
+ ap.alignFrame.showSeqFeatures.setSelected(true);\r
+ av.setShowSequenceFeatures(true);\r
+ ap.highlightSearchResults(null);\r
+ }\r
}\r
\r
/**\r
JMenuItem enterPDB = new JMenuItem();\r
JMenuItem discoverPDB = new JMenuItem();\r
JMenu outputMenu = new JMenu();\r
+ JMenuItem sequenceFeature = new JMenuItem();\r
\r
/**\r
* Creates a new PopupMenu object.\r
}\r
});\r
outputMenu.setText("Output to Textbox...");\r
+ sequenceFeature.setText("Create Sequence Feature");\r
+ sequenceFeature.addActionListener(new ActionListener()\r
+ {\r
+ public void actionPerformed(ActionEvent e)\r
+ {\r
+ sequenceFeature_actionPerformed(e);\r
+ }\r
+ });\r
add(groupMenu);\r
\r
add(sequenceMenu);\r
groupMenu.add(editMenu);\r
groupMenu.add(outputMenu);\r
groupMenu.addSeparator();\r
+ groupMenu.add(sequenceFeature);\r
+ groupMenu.addSeparator();\r
groupMenu.add(groupName);\r
groupMenu.add(unGroupMenuItem);\r
groupMenu.add(colourMenu);\r
\r
sg.cs = udc;\r
}\r
+ refresh();\r
}\r
/**\r
* DOCUMENT ME!\r
new jalview.io.DBRefFetcher(\r
ap.av.getAlignment(), ap.alignFrame).fetchDBRefs(false);\r
}\r
+\r
+ public void sequenceFeature_actionPerformed(ActionEvent e)\r
+ {\r
+ SequenceGroup sg = ap.av.getSelectionGroup();\r
+ if(sg==null)\r
+ return;\r
+\r
+ int gSize= sg.getSize(false);\r
+ SequenceI [] seqs = new SequenceI[gSize];\r
+ SequenceFeature [] features = new SequenceFeature[gSize];\r
+\r
+ for (int i = 0; i < gSize; i++)\r
+ {\r
+ seqs[i] = sg.getSequenceAt(i).getDatasetSequence();\r
+ int start = sg.getSequenceAt(i).findPosition(sg.getStartRes());\r
+ int end = sg.findEndRes(sg.getSequenceAt(i));\r
+\r
+ features[i] = new SequenceFeature(\r
+ "",\r
+ "Search Results", null,\r
+ start,\r
+ end,\r
+ "Search Results");\r
+ }\r
+\r
+ if (ap.seqPanel.seqCanvas.getFeatureRenderer()\r
+ .createNewFeatures(seqs, features))\r
+ {\r
+ ap.alignFrame.showSeqFeatures.setSelected(true);\r
+ ap.av.setShowSequenceFeatures(true);\r
+ ap.highlightSearchResults(null);\r
+ }\r
+ }\r
}\r