X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=68996266eed550b9e608a0cfe517c43058575260;hb=553a3df552d02cd08328c3e4044c5f686c012776;hp=f82efb5b9b25bade7cbc11287ced0586f4c9c0d2;hpb=0b23947e2cdcd704d3f313b23ba271e43d097344;p=jalview.git
diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java
index f82efb5..6899626 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!
@@ -58,9 +60,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
/** DOCUMENT ME!! */
- public String currentFileFormat = null;
+ String currentFileFormat = null;
- public String fileName = null;
+ String fileName = null;
private int treeCount = 0;
@@ -146,12 +148,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
addKeyListener();
+ }
+ public void setFileName(String file, String format)
+ {
+ fileName = file;
+ currentFileFormat = format;
+ reload.setEnabled(true);
}
void addKeyListener()
{
- final AlignFrame af = this;
addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent evt)
@@ -165,37 +172,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
switch (evt.getKeyCode())
{
- case KeyEvent.VK_V:
- if (!evt.isControlDown())
- {
- AlignmentPanel newap =
- new Jalview2XML().copyAlignPanel(alignPanel, true);
-
- if(viewport.viewName==null)
- viewport.viewName="View 1";
-
- newap.av.historyList = viewport.historyList;
- newap.av.redoList = viewport.redoList;
- newap.av.viewName = "View " +
- (Desktop.getViewCount(viewport.getSequenceSetId())+1);
-
- addAlignmentPanel(newap, false);
-
- tabbedPane.setSelectedIndex(tabbedPane.getTabCount()-1);
-
- }
- break;
- case KeyEvent.VK_G:
- Desktop.instance.gatherViews(af);
- break;
-
- case KeyEvent.VK_X:
- if (!evt.isControlDown())
- {
- Desktop.instance.explodeViews(af);
- }
- break;
-
case 27: // escape key
deselectAllSequenceMenuItem_actionPerformed(null);
@@ -386,6 +362,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);
@@ -404,6 +382,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
this.getContentPane().add(tabbedPane, BorderLayout.CENTER);
}
+ expandViews.setEnabled(true);
+ gatherViews.setEnabled(true);
tabbedPane.addTab(ap.av.viewName==null?"Original":ap.av.viewName, ap);
ap.setVisible(false);
@@ -411,8 +391,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);
}
}
@@ -450,7 +432,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
{
// System.out.println("deregistering discoverer listener");
Desktop.discoverer.removePropertyChangeListener(thisListener);
- closeMenuItem_actionPerformed(null);
+ closeMenuItem_actionPerformed(true);
}
;
});
@@ -476,10 +458,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);
@@ -492,7 +476,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
showSeqFeatures.setSelected(av.showSequenceFeatures);
hiddenMarkers.setState(av.showHiddenMarkers);
applyToAllGroups.setState(av.colourAppliesToAllGroups);
- smoothFont.setState(av.antiAlias);
updateEditMenuBar();
}
@@ -563,6 +546,44 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
Desktop.instance.inputLocalFileMenuItem_actionPerformed(viewport);
}
+ public void reload_actionPerformed(ActionEvent e)
+ {
+ if(fileName!=null)
+ {
+ if(currentFileFormat.equals("Jalview"))
+ {
+ this.closeMenuItem_actionPerformed(true);
+ }
+ else
+ {
+ viewport.alignment.deleteAllGroups();
+ viewport.sequenceColours=null;
+ while (viewport.alignment.getHeight() > 0)
+ {
+ viewport.alignment.deleteSequence(0);
+ }
+
+ viewport.historyList.clear();
+ viewport.redoList.clear();
+ Alignment dset = viewport.alignment.getDataset();
+ while (dset.getHeight() > 0)
+ {
+ dset.deleteSequence(0);
+ }
+
+ firePropertyChange("Alignment", null, null);
+
+ updateEditMenuBar();
+ }
+
+ FileLoader loader = new FileLoader();
+ String protocol = fileName.startsWith("http:")? "URL":"File";
+ loader.LoadFile(viewport, fileName, protocol, currentFileFormat);
+
+ }
+ }
+
+
public void addFromText_actionPerformed(ActionEvent e)
{
Desktop.instance.inputTextboxMenuItem_actionPerformed(viewport);
@@ -723,6 +744,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
}
CutAndPasteTransfer cap = new CutAndPasteTransfer();
+ cap.setForInput(null);
Desktop.addInternalFrame(cap,
"Alignment output - " + e.getActionCommand(), 600,
500);
@@ -825,28 +847,45 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
*
* @param e DOCUMENT ME!
*/
- public void closeMenuItem_actionPerformed(ActionEvent e)
+ public void closeMenuItem_actionPerformed(boolean closeAllTabs)
{
+ if(alignPanels!=null && alignPanels.size()<2)
+ closeAllTabs = true;
+
try
{
if(alignPanels!=null)
{
- for (int i = 0; i < alignPanels.size(); i++)
+ if (closeAllTabs)
+ for (int i = 0; i < alignPanels.size(); i++)
+ {
+ AlignmentPanel ap = (AlignmentPanel) alignPanels.elementAt(i);
+ PaintRefresher.RemoveComponent(ap.seqPanel.seqCanvas);
+ PaintRefresher.RemoveComponent(ap.idPanel.idCanvas);
+ PaintRefresher.RemoveComponent(ap);
+ }
+ else
{
- AlignmentPanel ap = (AlignmentPanel) alignPanels.elementAt(i);
- PaintRefresher.RemoveComponent(ap.seqPanel.seqCanvas);
- PaintRefresher.RemoveComponent(ap.idPanel.idCanvas);
- PaintRefresher.RemoveComponent(ap);
+ int index = tabbedPane.getSelectedIndex();
+
+ tabbedPane.removeTabAt(index);
+ alignPanels.removeElement(alignPanel);
+ PaintRefresher.RemoveComponent(alignPanel.seqPanel.seqCanvas);
+ PaintRefresher.RemoveComponent(alignPanel.idPanel.idCanvas);
+ PaintRefresher.RemoveComponent(alignPanel);
+ alignPanel = null;
+ viewport = null;
+ tabbedPane.validate();
+
+ if(index==tabbedPane.getTabCount())
+ index --;
+
+ this.tabSelectionChanged(index);
}
- // alignPanels = null;
}
- // else
- // System.out.println("null one here");
- // alignPanel = null;
- // viewport = null;
-
- this.setClosed(true);
+ if (closeAllTabs)
+ this.setClosed(true);
}
catch (Exception ex)
{
@@ -912,10 +951,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
viewport.redoList.push(command);
command.undoCommand();
- viewport.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null;
+ AlignViewport originalSource = getOriginatingSource(command);
+
+ originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null;
updateEditMenuBar();
- viewport.firePropertyChange("alignment", null,
- viewport.getAlignment().getSequences());
+ originalSource.firePropertyChange("alignment", null,null);
}
/**
@@ -928,12 +968,40 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
CommandI command = (CommandI) viewport.redoList.pop();
viewport.historyList.push(command);
command.doCommand();
- viewport.hasHiddenColumns = viewport.colSel.getHiddenColumns()!=null;
+
+ AlignViewport originalSource = getOriginatingSource(command);
+ originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns()!=null;
updateEditMenuBar();
- viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());
+ originalSource.firePropertyChange("alignment", null, null);
}
+ AlignViewport getOriginatingSource(CommandI command)
+ {
+ AlignViewport originalSource = viewport;
+ //For sequence removal and addition, we need to fire
+ //the property change event FROM the viewport where the
+ //original alignment was altered
+ if (command instanceof EditCommand)
+ {
+ EditCommand editCommand = (EditCommand) command;
+ AlignmentI al = editCommand.getAlignment();
+ Vector comps = (Vector) PaintRefresher.components
+ .get(viewport.getSequenceSetId());
+ for (int i = 0; i < comps.size(); i++)
+ {
+ if (comps.elementAt(i) instanceof AlignmentPanel)
+ {
+ if (al == ( (AlignmentPanel) comps.elementAt(i)).av.alignment)
+ {
+ originalSource = ( (AlignmentPanel) comps.elementAt(i)).av;
+ break;
+ }
+ }
+ }
+ }
+ return originalSource;
+ }
/**
* DOCUMENT ME!
@@ -1297,7 +1365,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
*
* @param e DOCUMENT ME!
*/
- protected void delete_actionPerformed(ActionEvent e)
+ protected void delete_actionPerformed(ActionEvent evt)
{
SequenceGroup sg = viewport.getSelectionGroup();
@@ -1307,15 +1375,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;
}
@@ -1369,6 +1433,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();
@@ -1413,7 +1478,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());
}
/**
@@ -1438,7 +1503,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)
@@ -1497,6 +1562,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
viewport.alignment,
viewport.colSel,
viewport.selectionGroup);
+ viewport.setStartRes(0);
}
else
{
@@ -1632,13 +1698,43 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
*/
public void findMenuItem_actionPerformed(ActionEvent e)
{
- JInternalFrame frame = new JInternalFrame();
- Finder finder = new Finder(viewport, alignPanel, frame);
- frame.setContentPane(finder);
- frame.setLayer(JLayeredPane.PALETTE_LAYER);
- Desktop.addInternalFrame(frame, "Find", 340, 110);
+ new Finder();
+ }
+
+ public void newView_actionPerformed(ActionEvent e)
+ {
+ AlignmentPanel newap =
+ new Jalview2XML().copyAlignPanel(alignPanel, true);
+
+ if (viewport.viewName == null)
+ viewport.viewName = "View 1";
+
+ newap.av.historyList = viewport.historyList;
+ newap.av.redoList = viewport.redoList;
+ newap.av.viewName = "View " +
+ (Desktop.getViewCount(viewport.getSequenceSetId()) + 1);
+
+ addAlignmentPanel(newap, false);
+
+ if(alignPanels.size()==2)
+ {
+ viewport.gatherViewsHere = true;
+ }
+ tabbedPane.setSelectedIndex(tabbedPane.getTabCount() - 1);
+ }
+
+ public void expandViews_actionPerformed(ActionEvent e)
+ {
+ Desktop.instance.explodeViews(this);
+ }
+
+ public void gatherViews_actionPerformed(ActionEvent e)
+ {
+ Desktop.instance.gatherViews(this);
}
+
+
/**
* DOCUMENT ME!
*
@@ -1649,13 +1745,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
new FontChooser(alignPanel);
}
- public void smoothFont_actionPerformed(ActionEvent e)
- {
- viewport.antiAlias = smoothFont.isSelected();
- alignPanel.annotationPanel.image = null;
- alignPanel.repaint();
- }
-
/**
* DOCUMENT ME!
@@ -1670,6 +1759,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
alignPanel.repaint();
}
+ public void idRightAlign_actionPerformed(ActionEvent e)
+ {
+ viewport.idsAlignRight = idRightAlign.isSelected();
+ alignPanel.repaint();
+ }
+
+
/**
* DOCUMENT ME!
@@ -1861,6 +1957,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