+ start.setText(features[0].getBegin()+"");\r
+ end.setText(features[0].getEnd()+"");\r
+ description.setText(features[0].getDescription());\r
+\r
+ Color col = getColour(name.getText());\r
+ if (col == null)\r
+ {\r
+ col = new\r
+ jalview.schemes.UserColourScheme()\r
+ .createColourFromName(name.getText());\r
+ }\r
+\r
+ colourPanel.setBackground(col);\r
+\r
+ dialog.setResizable(true);\r
+\r
+\r
+ colourPanel.addMouseListener(new java.awt.event.MouseAdapter()\r
+ {\r
+ public void mousePressed(java.awt.event.MouseEvent evt)\r
+ {\r
+ new UserDefinedColours(fr, ap.alignFrame);\r
+ }\r
+ });\r
+\r
+ dialog.setVisible(true);\r
+\r
+ jalview.io.FeaturesFile ffile = new jalview.io.FeaturesFile();\r
+\r
+ if (dialog.accept)\r
+ {\r
+ //This ensures that the last sequence\r
+ //is refreshed and new features are rendered\r
+ lastSeq = null;\r
+ lastFeatureAdded = name.getText().trim();\r
+ lastFeatureGroupAdded = source.getText().trim();\r
+ lastDescriptionAdded = description.getText().replace('\n', ' ');\r
+ }\r
+\r
+ if(lastFeatureGroupAdded !=null && lastFeatureGroupAdded.length()<1)\r
+ lastFeatureGroupAdded = null;\r
+\r
+\r
+ if (!newFeatures)\r
+ {\r
+ SequenceFeature sf = features[featureIndex];\r
+\r
+ if (dialog.accept)\r
+ {\r
+ sf.type = lastFeatureAdded;\r
+ sf.featureGroup = lastFeatureGroupAdded;\r
+ sf.description = lastDescriptionAdded;\r
+ setColour(sf.type, colourPanel.getBackground());\r
+ try\r
+ {\r
+ sf.begin = Integer.parseInt(start.getText());\r
+ sf.end = Integer.parseInt(end.getText());\r
+ }\r
+ catch (NumberFormatException ex)\r
+ {}\r
+\r
+ ffile.parseDescriptionHTML(sf, false);\r
+ }\r
+ if (deleteFeature)\r
+ {\r
+ sequences[0].deleteFeature(sf);\r
+ }\r
+\r
+ }\r
+ else\r
+ {\r
+ if (dialog.accept && name.getText().length()>0)\r
+ {\r
+ for (int i = 0; i < sequences.length; i++)\r
+ {\r
+ features[i].type = lastFeatureAdded;\r
+ features[i].featureGroup = lastFeatureGroupAdded;\r
+ features[i].description = lastDescriptionAdded;\r
+ sequences[i].addSequenceFeature(features[i]);\r
+ ffile.parseDescriptionHTML(features[i], false);\r
+ }\r
+\r
+ if (av.featuresDisplayed == null)\r
+ {\r
+ av.featuresDisplayed = new Hashtable();\r
+ }\r
+\r
+ if (featureGroups == null)\r
+ {\r
+ featureGroups = new Hashtable();\r
+ }\r
+\r
+ col = colourPanel.getBackground();\r
+ setColour(lastFeatureAdded, col);\r
+\r
+ if(lastFeatureGroupAdded!=null)\r
+ {\r
+ featureGroups.put(lastFeatureGroupAdded, new Boolean(true));\r
+ av.featuresDisplayed.put(lastFeatureGroupAdded,\r
+ new Integer(col.getRGB()));\r
+ }\r
+ findAllFeatures();\r
+\r
+ String [] tro = new String[renderOrder.length];\r
+ tro[0] = renderOrder[renderOrder.length-1];\r
+ System.arraycopy(renderOrder,0,tro,1,renderOrder.length-1);\r
+ renderOrder = tro;\r
+\r
+ ap.paintAlignment(true);\r
+\r
+ return true;\r
+ }\r
+ else\r
+ {\r
+ return false;\r
+ }\r
+ }\r
+\r
+ findAllFeatures();\r
+\r
+ ap.paintAlignment(true);\r
+\r
+ return true;\r