- SeqPanel seqPanel;\r
- ColourSchemeI colourScheme;\r
- JButton selectedButton;\r
- Vector oldColours = new Vector();\r
- JInternalFrame frame;\r
-\r
- public UserDefinedColours(JInternalFrame f, SeqPanel sp)\r
- {\r
- super();\r
- colorChooser.getSelectionModel().addChangeListener(this);\r
- seqPanel = sp;\r
- frame = f;\r
- colourScheme = seqPanel.getColourScheme();\r
- // colourScheme.\r
-\r
- for(int i=0; i<20; i++)\r
- makeButton(ResidueProperties.aa2Triplet.get( ResidueProperties.aa[i] )+"", ResidueProperties.aa[i]);\r
-\r
- makeButton("B","B");\r
- makeButton("Z","Z");\r
- makeButton("X","X");\r
- makeButton("'.','-',' '", "-");\r
-\r
- }\r
-\r
- public void stateChanged(ChangeEvent evt)\r
- {\r
- if(selectedButton!=null)\r
- selectedButton.setBackground( colorChooser.getColor() );\r
- }\r
-\r
- public void colourButtonPressed(MouseEvent e)\r
- {\r
- selectedButton = (JButton)e.getSource();\r
- colorChooser.setColor(selectedButton.getBackground());\r
- }\r
-\r
- void makeButton(String label, String aa)\r
- {\r
- final JButton button = new JButton();\r
- button.setBackground( colourScheme.findColour(null,aa,-1,null) );\r
- oldColours.addElement( colourScheme.findColour(null,aa,-1,null) );\r
- button.setText( label );\r
- button.setFont(new java.awt.Font("Verdana", 1, 10));\r
- button.addMouseListener(new java.awt.event.MouseAdapter()\r
- {\r
- public void mouseClicked(MouseEvent e)\r
- {\r
- colourButtonPressed(e);\r
- }\r
- });\r
-\r
- buttonPanel.add(button);\r
- }\r
-\r
-\r
- protected void okButton_actionPerformed(ActionEvent e)\r
- {\r
- applyButton_actionPerformed(null);\r
- try{\r
- frame.setClosed(true);\r
- }catch(Exception ex){}\r
- }\r
-\r
- protected void applyButton_actionPerformed(ActionEvent e)\r
- {\r
- UserColourScheme ucs = new UserColourScheme();\r
- Color [] newColours = new Color[24];\r
- for(int i=0; i<24; i++)\r
- {\r
- JButton button = (JButton)buttonPanel.getComponent(i);\r
- newColours[i] = button.getBackground();\r
+\r
+ /**\r
+ * Creates a new UserDefinedColours object.\r
+ *\r
+ * @param ap DOCUMENT ME!\r
+ * @param sg DOCUMENT ME!\r
+ */\r
+ public UserDefinedColours(AlignmentPanel ap, SequenceGroup sg)\r
+ {\r
+ super();\r
+\r
+ //AW - LOWER CASE DISABLED IN 2.1.01 bug fix release\r
+ casePanel.setVisible(false);\r
+\r
+\r
+ lcaseColour.setEnabled(false);\r
+\r
+ this.ap = ap;\r
+ seqGroup = sg;\r
+\r
+ if (seqGroup != null)\r
+ oldColourScheme = seqGroup.cs;\r
+ else\r
+ oldColourScheme = ap.av.getGlobalColourScheme();\r
+\r
+ if (oldColourScheme instanceof UserColourScheme)\r
+ {\r
+ schemeName.setText( ( (UserColourScheme) oldColourScheme).getName());\r
+ if(( (UserColourScheme) oldColourScheme).getLowerCaseColours()!=null)\r
+ {\r
+ caseSensitive.setSelected(true);\r
+ lcaseColour.setEnabled(true);\r
+ resetButtonPanel(true);\r
+ }\r
+ else\r
+ resetButtonPanel(false);\r
+ }\r
+ else\r
+ resetButtonPanel(false);\r
+\r
+ showFrame();\r
+ }\r
+\r
+ public UserDefinedColours(MCview.PDBCanvas pdb, ColourSchemeI oldcs)\r
+ {\r
+ super();\r
+ pdbcanvas = pdb;\r
+\r
+ colorChooser.getSelectionModel().addChangeListener(this);\r
+\r
+ oldColourScheme = oldcs;\r
+\r
+ if (oldColourScheme instanceof UserColourScheme)\r
+ {\r
+ schemeName.setText( ( (UserColourScheme) oldColourScheme).getName());\r
+ }\r
+\r
+ resetButtonPanel(false);\r
+\r
+ showFrame();\r
+\r
+ }\r
+\r
+ void showFrame()\r
+ {\r
+ colorChooser.getSelectionModel().addChangeListener(this);\r
+ frame = new JInternalFrame();\r
+ frame.setContentPane(this);\r
+ Desktop.addInternalFrame(frame, "User Defined Colours", 720, 370, true);\r
+\r
+ if (seqGroup != null)\r
+ frame.setTitle(frame.getTitle() + " (" + seqGroup.getName() + ")");\r
+\r
+ if (System.getProperty("os.name").startsWith("Mac"))\r
+ {\r
+ frame.setSize(760, 370);\r
+ }\r
+ }\r
+\r
+ void resetButtonPanel(boolean caseSensitive)\r
+ {\r
+ //AW - LOWER CASE DISABLED IN 2.1.01 bug fix release\r
+ caseSensitive = false;\r
+\r
+ buttonPanel.removeAll();\r
+\r
+\r
+ if(upperCaseButtons==null)\r
+ upperCaseButtons = new Vector();\r
+\r
+ JButton button;\r
+ String label;\r
+ for (int i = 0; i < 20; i++)\r
+ {\r
+ if(caseSensitive)\r
+ label = ResidueProperties.aa[i];\r
+ else\r
+ label = ResidueProperties.aa2Triplet.get\r
+ (ResidueProperties.aa[i]).toString();\r
+\r
+ button = makeButton(label,\r
+ ResidueProperties.aa[i],\r
+ upperCaseButtons, i);\r
+\r
+ buttonPanel.add(button);\r
+ }\r
+\r
+ buttonPanel.add(makeButton("B", "B", upperCaseButtons, 20));\r
+ buttonPanel.add(makeButton("Z", "Z", upperCaseButtons, 21));\r
+ buttonPanel.add(makeButton("X", "X", upperCaseButtons, 22));\r
+ buttonPanel.add(makeButton("Gap", "-", upperCaseButtons, 23));\r
+\r
+ if(!caseSensitive)\r
+ {\r
+ gridLayout.setRows(6);\r
+ gridLayout.setColumns(4);\r
+ }\r
+ else\r
+ {\r
+ gridLayout.setRows(7);\r
+ int cols = 7;\r
+ gridLayout.setColumns(cols+1);\r
+\r
+ if(lowerCaseButtons==null)\r
+ lowerCaseButtons = new Vector();\r
+\r
+\r
+ for (int i = 0; i < 20; i++)\r
+ {\r
+ int row = i / cols + 1;\r
+ int index = (row * cols) + i;\r
+ button = makeButton(\r
+ ResidueProperties.aa[i].toLowerCase(),\r
+ ResidueProperties.aa[i].toLowerCase(),\r
+ lowerCaseButtons,\r
+ i);\r
+\r
+ buttonPanel.add(button, index);\r
+ }\r
+ }\r
+\r
+\r
+ if(caseSensitive)\r
+ {\r
+ buttonPanel.add(makeButton("b", "b", lowerCaseButtons, 20));\r
+ buttonPanel.add(makeButton("z", "z", lowerCaseButtons, 21));\r
+ buttonPanel.add(makeButton("x", "x", lowerCaseButtons, 22));\r
+ }\r
+\r
+ buttonPanel.validate();\r
+ validate();\r
+ }\r
+\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param evt DOCUMENT ME!\r
+ */\r
+ public void stateChanged(ChangeEvent evt)\r
+ {\r
+ if (selectedButtons != null)\r
+ {\r
+ JButton button=null;\r
+ for(int i=0; i<selectedButtons.size(); i++)\r
+ {\r
+ button = (JButton)selectedButtons.elementAt(i);\r
+ button.setBackground(colorChooser.getColor());\r
+ button.setForeground( button.getBackground().brighter().brighter().brighter());\r
+ }\r
+ if(button==lcaseColour)\r
+ {\r
+ for(int i=0; i<lowerCaseButtons.size(); i++)\r
+ {\r
+ button = (JButton)lowerCaseButtons.elementAt(i);\r
+ button.setBackground(colorChooser.getColor());\r
+ button.setForeground( button.getBackground().brighter().brighter().brighter());\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param e DOCUMENT ME!\r
+ */\r
+ public void colourButtonPressed(MouseEvent e)\r
+ {\r
+ if(selectedButtons == null)\r
+ selectedButtons = new Vector();\r
+\r
+ JButton pressed = (JButton) e.getSource();\r
+\r
+ if(e.isShiftDown())\r
+ {\r
+ JButton start, end = (JButton) e.getSource();\r
+ if(selectedButtons.size()>0)\r
+ start = (JButton)selectedButtons.elementAt(selectedButtons.size()-1);\r
+ else\r
+ start = (JButton) e.getSource();\r
+\r
+ int startIndex=0, endIndex=0;\r
+ for(int b=0; b<buttonPanel.getComponentCount(); b++)\r
+ {\r
+ if(buttonPanel.getComponent(b)==start)\r
+ startIndex = b;\r
+ if(buttonPanel.getComponent(b)==end)\r
+ endIndex = b;\r
+ }\r
+\r
+ if(startIndex > endIndex)\r
+ {\r
+ int temp = startIndex;\r
+ startIndex = endIndex;\r
+ endIndex = temp;\r
+ }\r
+\r
+ for(int b=startIndex; b<=endIndex; b++)\r
+ {\r
+ JButton button = (JButton)buttonPanel.getComponent(b);\r
+ if(!selectedButtons.contains(button))\r
+ {\r
+ button.setForeground(button.getBackground().brighter().brighter());\r
+ selectedButtons.add(button);\r
+ }\r
+ }\r
+ }\r
+ else if(!e.isControlDown())\r
+ {\r
+ for(int b=0; b<selectedButtons.size(); b++)\r
+ {\r
+ JButton button = (JButton)selectedButtons.elementAt(b);\r
+ button.setForeground(button.getBackground().darker().darker());\r
+ }\r
+ selectedButtons.clear();\r
+ pressed.setForeground( pressed.getBackground().brighter().brighter());\r
+ selectedButtons.addElement(pressed);\r
+\r
+ }\r
+ else if(e.isControlDown())\r
+ {\r
+ if(selectedButtons.contains(pressed))\r
+ {\r
+ pressed.setForeground(pressed.getBackground().darker().darker());\r
+ selectedButtons.remove(pressed);\r
+ }\r
+ else\r
+ {\r
+ pressed.setForeground( pressed.getBackground().brighter().brighter());\r
+ selectedButtons.addElement(pressed);\r
+ }\r
+ }\r
+\r
+ if(selectedButtons.size()>0)\r
+ colorChooser.setColor( ((JButton)selectedButtons.elementAt(0)).getBackground());\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param label DOCUMENT ME!\r
+ * @param aa DOCUMENT ME!\r
+ */\r
+ JButton makeButton(String label,\r
+ String aa,\r
+ Vector caseSensitiveButtons,\r
+ int buttonIndex)\r
+ {\r
+ final JButton button;\r
+ Color col;\r
+\r
+ if(buttonIndex<caseSensitiveButtons.size())\r
+ {\r
+ button = (JButton) caseSensitiveButtons.elementAt(buttonIndex);\r
+ col = button.getBackground();\r
+ }\r
+ else\r
+ {\r
+ button = new JButton();\r
+ button.addMouseListener(new java.awt.event.MouseAdapter()\r
+ {\r
+ public void mouseClicked(MouseEvent e)\r
+ {\r
+ colourButtonPressed(e);\r
+ }\r
+ });\r
+\r
+ caseSensitiveButtons.addElement(button);\r
+\r
+ col = Color.white;\r
+\r
+ try\r
+ {\r
+ col = oldColourScheme.findColour(aa, -1);\r
+ }\r
+ catch (Exception ex)\r
+ { }\r
+ }\r
+\r
+ /* //AW - LOWER CASE DISABLED IN 2.1.01 bug fix release\r
+ if(caseSensitive.isSelected())\r
+ button.setMargin(new java.awt.Insets(2,2,2,2));\r
+ else\r
+ button.setMargin(new java.awt.Insets(2,14,2,14));\r
+ */\r
+\r
+ button.setBackground(col);\r
+ button.setText(label);\r
+ button.setForeground(col.darker().darker().darker());\r
+ button.setFont(new java.awt.Font("Verdana", Font.BOLD, 10));\r
+\r
+ return button;\r