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