From 8ac358f8762f9a632d5dc70aa32df57ca0755244 Mon Sep 17 00:00:00 2001 From: amwaterhouse Date: Mon, 13 Nov 2006 11:13:44 +0000 Subject: [PATCH] Text colour adapter --- src/jalview/gui/AlignFrame.java | 117 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 116 insertions(+), 1 deletion(-) diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index b28ae78..9e0bae6 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -36,6 +36,8 @@ import jalview.schemes.*; import jalview.commands.*; import jalview.ws.*; import java.awt.dnd.*; +import javax.swing.event.ChangeListener; +import javax.swing.event.ChangeEvent; /** * DOCUMENT ME! @@ -397,8 +399,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener if(newPanel) { - ap.av.updateConsensus(ap); + if (ap.av.padGaps) + ap.av.alignment.padGaps(); ap.av.updateConservation(ap); + ap.av.updateConsensus(ap); } } @@ -559,6 +563,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener else { viewport.alignment.deleteAllGroups(); + viewport.sequenceColours.clear(); while (viewport.alignment.getHeight() > 0) { viewport.alignment.deleteSequence(0); @@ -1408,6 +1413,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener protected void deleteGroups_actionPerformed(ActionEvent e) { viewport.alignment.deleteAllGroups(); + viewport.sequenceColours.clear(); viewport.setSelectionGroup(null); PaintRefresher.Refresh(this, viewport.getSequenceSetId()); alignPanel.repaint(); @@ -1536,6 +1542,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener viewport.alignment, viewport.colSel, viewport.selectionGroup); + viewport.setStartRes(0); } else { @@ -1916,6 +1923,114 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener alignPanel.setOverviewPanel(overview); } + public void textColour_actionPerformed(ActionEvent e) + { + int original1 = viewport.textColour.getRGB(); + int original2 = viewport.textColour2.getRGB(); + int thresh = viewport.thresholdTextColour; + final JSlider slider = new JSlider(0, 750, viewport.thresholdTextColour); + final JButton col1 = new JButton("DARK"); + col1.setBackground(viewport.textColour); + col1.setForeground(viewport.textColour); + final JButton col2 = new JButton("LIGHT"); + col2.setBackground(viewport.textColour2); + col2.setForeground(viewport.textColour2); + final JPanel bigpanel = new JPanel(new BorderLayout()); + JPanel panel = new JPanel(); + bigpanel.add(panel, BorderLayout.CENTER); + bigpanel.add(new JLabel( + "Select a dark and light text colour, then set the threshold to" + +"
switch between colours, based on background colour
"), + BorderLayout.NORTH); + panel.add(col1); + panel.add(slider); + panel.add(col2); + + col1.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + Color col = JColorChooser.showDialog(bigpanel, + "Select Colour for Text", + viewport.textColour); + if (col != null) + { + viewport.textColour = col; + col1.setBackground(col); + col1.setForeground(col); + if(viewport.colourAppliesToAllGroups) + setGroupTextColour(); + } + alignPanel.repaint(); + } + }); + + col2.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + Color col = JColorChooser.showDialog(bigpanel, + "Select Colour for Text", + viewport.textColour); + if (col != null) + { + viewport.textColour2 = col; + col2.setBackground(col); + col2.setForeground(col); + if(viewport.colourAppliesToAllGroups) + setGroupTextColour(); + } + alignPanel.repaint(); + } + }); + + + slider.addChangeListener(new ChangeListener() + { + public void stateChanged(ChangeEvent evt) + { + viewport.thresholdTextColour = slider.getValue(); + if(viewport.colourAppliesToAllGroups) + setGroupTextColour(); + alignPanel.repaint(); + } + }); + + int reply = JOptionPane.showInternalOptionDialog(this, + bigpanel, + "Adjust Foreground Text Colour Threshold", + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, + null, null); + + if(reply==JOptionPane.CANCEL_OPTION) + { + viewport.textColour = new Color(original1); + viewport.textColour2 = new Color(original2); + viewport.thresholdTextColour = thresh; + } + } + + void setGroupTextColour() + { + if(viewport.alignment.getGroups()==null) + return; + + Vector groups = viewport.alignment.getGroups(); + + for(int i=0; i