X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=18ebf0eb64c794816d71bbfe73512ae2f242481c;hb=32a72d077d2371f4566688fbd103103d8505b27f;hp=b28ae78b1b3b77b8eb02f34e7702eacacc942cd7;hpb=c2e76dc534d9197040fe05c89dd3c6c3b62e85f7;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index b28ae78..18ebf0e 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! @@ -372,6 +374,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener alignPanels.addElement(ap); + PaintRefresher.Register(ap, ap.av.getSequenceSetId()); + int aSize = alignPanels.size(); tabbedPane.setVisible(aSize>1 || ap.av.viewName!=null); @@ -397,8 +401,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); } } @@ -462,10 +468,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener */ void setMenusFromViewport(AlignViewport av) { + padGapsMenuitem.setSelected(av.padGaps); colourTextMenuItem.setSelected(av.showColourText); abovePIDThreshold.setSelected(av.getAbovePIDThreshold()); conservationMenuItem.setSelected(av.getConservationSelected()); seqLimits.setSelected(av.getShowJVSuffix()); + idRightAlign.setSelected(av.idsAlignRight); renderGapsMenuItem.setSelected(av.renderGaps); wrapMenuItem.setSelected(av.wrapAlignment); annotationPanelMenuItem.setState(av.showAnnotation); @@ -559,6 +567,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener else { viewport.alignment.deleteAllGroups(); + viewport.sequenceColours=null; while (viewport.alignment.getHeight() > 0) { viewport.alignment.deleteSequence(0); @@ -578,7 +587,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener } FileLoader loader = new FileLoader(); - loader.LoadFile(viewport, fileName, "File", currentFileFormat); + String protocol = fileName.startsWith("http:")? "URL":"File"; + loader.LoadFile(viewport, fileName, protocol, currentFileFormat); } } @@ -951,10 +961,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener viewport.redoList.push(command); command.undoCommand(); + viewport.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null; updateEditMenuBar(); - viewport.firePropertyChange("alignment", null, - viewport.getAlignment().getSequences()); + viewport.firePropertyChange("alignment", null,null); } /** @@ -970,7 +980,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener viewport.hasHiddenColumns = viewport.colSel.getHiddenColumns()!=null; updateEditMenuBar(); - viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); + viewport.firePropertyChange("alignment", null, null); } @@ -1346,15 +1356,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener } Vector seqs = new Vector(); - int cutLength = sg.getEndRes()-sg.getStartRes()+1; - boolean seqsCut = false; SequenceI seq; for (int i = 0; i < sg.getSize(false); i++) { seq = sg.getSequenceAt(i); seqs.addElement(seq); - if(seq.getLength()<=cutLength) - seqsCut = true; } @@ -1408,6 +1414,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(); @@ -1452,7 +1459,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener alignPanel.seqPanel.seqCanvas.highlightSearchResults(null); alignPanel.idPanel.idCanvas.searchResults = null; alignPanel.repaint(); - PaintRefresher.Refresh(this, viewport.getSequenceSetId()); + PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId()); } /** @@ -1477,7 +1484,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener sg.addOrRemove(viewport.getAlignment().getSequenceAt(i), false); } - PaintRefresher.Refresh(this, viewport.getSequenceSetId()); + PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId()); } public void invertColSel_actionPerformed(ActionEvent e) @@ -1536,6 +1543,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener viewport.alignment, viewport.colSel, viewport.selectionGroup); + viewport.setStartRes(0); } else { @@ -1725,6 +1733,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener alignPanel.repaint(); } + public void idRightAlign_actionPerformed(ActionEvent e) + { + viewport.idsAlignRight = idRightAlign.isSelected(); + alignPanel.repaint(); + } + + /** * DOCUMENT ME! @@ -1916,6 +1931,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