X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignFrame.java;h=9fb91ed9a0105c753995cf609dcee760b7dfaa6c;hb=b5d61763044c1d72f06ce0e50da2171422a3774b;hp=f2678581dd195b8dc7049e47bf0379a23024ecc7;hpb=aced09c4feeaf3406269442c14e54abeeb4cad81;p=jalview.git diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index f267858..9fb91ed 100644 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -21,13 +21,14 @@ package jalview.appletgui; import jalview.analysis.AlignmentSorter; -import jalview.analysis.Conservation; import jalview.api.AlignViewControllerGuiI; import jalview.api.AlignViewControllerI; import jalview.api.SequenceStructureBinding; +import jalview.api.FeatureRenderer; import jalview.bin.JalviewLite; import jalview.commands.CommandI; import jalview.commands.EditCommand; +import jalview.commands.EditCommand.Action; import jalview.commands.OrderCommand; import jalview.commands.RemoveGapColCommand; import jalview.commands.RemoveGapsCommand; @@ -56,7 +57,6 @@ import jalview.schemes.PIDColourScheme; import jalview.schemes.PurinePyrimidineColourScheme; import jalview.schemes.RNAHelicesColourChooser; import jalview.schemes.RNAInteractionColourScheme; -import jalview.schemes.ResidueProperties; import jalview.schemes.StrandColourScheme; import jalview.schemes.TCoffeeColourScheme; import jalview.schemes.TaylorColourScheme; @@ -90,9 +90,12 @@ import java.awt.event.WindowEvent; import java.io.IOException; import java.net.URL; import java.net.URLEncoder; +import java.util.Arrays; import java.util.Enumeration; import java.util.Hashtable; +import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.StringTokenizer; import java.util.Vector; @@ -286,7 +289,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { featuresFile = new jalview.io.FeaturesFile(file, type) .parse(viewport.getAlignment(), alignPanel.seqPanel.seqCanvas - .getFeatureRenderer().featureColours, featureLinks, + .getFeatureRenderer().getFeatureColours(), featureLinks, true, viewport.applet.getDefaultParameter( "relaxedidmatch", false)); } catch (Exception ex) @@ -302,9 +305,14 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } if (autoenabledisplay) { - viewport.showSequenceFeatures = true; + viewport.setShowSequenceFeatures(true); sequenceFeatures.setState(true); } + if (alignPanel.seqPanel.seqCanvas.fr != null) + { + // update the min/max ranges where necessary + alignPanel.seqPanel.seqCanvas.fr.findAllFeatures(true); + } if (viewport.featureSettings != null) { viewport.featureSettings.refreshTable(); @@ -324,7 +332,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, .getKeyCode() >= KeyEvent.VK_NUMPAD0 && evt .getKeyCode() <= KeyEvent.VK_NUMPAD9)) && Character.isDigit(evt.getKeyChar())) + { alignPanel.seqPanel.numberPressed(evt.getKeyChar()); + } switch (evt.getKeyCode()) { @@ -385,16 +395,24 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, case KeyEvent.VK_LEFT: if (evt.isAltDown() || !viewport.cursorMode) + { slideSequences(false, alignPanel.seqPanel.getKeyboardNo1()); + } else + { alignPanel.seqPanel.moveCursor(-1, 0); + } break; case KeyEvent.VK_RIGHT: if (evt.isAltDown() || !viewport.cursorMode) + { slideSequences(true, alignPanel.seqPanel.getKeyboardNo1()); + } else + { alignPanel.seqPanel.moveCursor(1, 0); + } break; case KeyEvent.VK_SPACE: @@ -720,7 +738,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } else if (evt.getSource() == sequenceFeatures) { - viewport.showSequenceFeatures(sequenceFeatures.getState()); + viewport.setShowSequenceFeatures(sequenceFeatures.getState()); alignPanel.seqPanel.seqCanvas.repaint(); } else if (evt.getSource() == conservationMenuItem) @@ -1201,20 +1219,13 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, return annotation; } - private Hashtable getDisplayedFeatureCols() + private Map getDisplayedFeatureCols() { if (alignPanel.getFeatureRenderer() != null - && viewport.featuresDisplayed != null) + && viewport.getFeaturesDisplayed()!= null) { - FeatureRenderer fr = alignPanel.getFeatureRenderer(); - Hashtable fcols = new Hashtable(); - Enumeration en = viewport.featuresDisplayed.keys(); - while (en.hasMoreElements()) - { - Object col = en.nextElement(); - fcols.put(col, fr.featureColours.get(col)); - } - return fcols; + return alignPanel.getFeatureRenderer().getDisplayedFeatureCols(); + } return null; } @@ -1257,7 +1268,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, else { if (features == null) + { features = ""; + } } return features; @@ -1418,6 +1431,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, /** * TODO: JAL-1104 */ + @Override public void addHistoryItem(CommandI command) { if (command.getSize() > 0) @@ -1573,7 +1587,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, for (int i = 0; i < viewport.getAlignment().getHeight(); i++) { if (!sg.contains(viewport.getAlignment().getSequenceAt(i))) + { invertGroup.addElement(viewport.getAlignment().getSequenceAt(i)); + } } SequenceI[] seqs1 = sg.toArray(new SequenceI[sg.size()]); @@ -1581,30 +1597,44 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, SequenceI[] seqs2 = invertGroup.toArray(new SequenceI[invertGroup .size()]); for (int i = 0; i < invertGroup.size(); i++) + { seqs2[i] = invertGroup.elementAt(i); + } SlideSequencesCommand ssc; if (right) + { ssc = new SlideSequencesCommand("Slide Sequences", seqs2, seqs1, size, viewport.getGapCharacter()); + } else + { ssc = new SlideSequencesCommand("Slide Sequences", seqs1, seqs2, size, viewport.getGapCharacter()); + } int groupAdjustment = 0; if (ssc.getGapsInsertedBegin() && right) { if (viewport.cursorMode) + { alignPanel.seqPanel.moveCursor(size, 0); + } else + { groupAdjustment = size; + } } else if (!ssc.getGapsInsertedBegin() && !right) { if (viewport.cursorMode) + { alignPanel.seqPanel.moveCursor(-size, 0); + } else + { groupAdjustment = -size; + } } if (groupAdjustment != 0) @@ -1625,7 +1655,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } if (!appendHistoryItem) + { addHistoryItem(ssc); + } repaint(); } @@ -1805,7 +1837,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } // !newAlignment - addHistoryItem(new EditCommand(MessageManager.getString("label.add_sequences"), EditCommand.PASTE, + addHistoryItem(new EditCommand( + MessageManager.getString("label.add_sequences"), Action.PASTE, seqs, 0, viewport.getAlignment().getWidth(), viewport.getAlignment())); @@ -1855,8 +1888,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, /* * //ADD HISTORY ITEM */ - addHistoryItem(new EditCommand(MessageManager.getString("label.cut_sequences"), EditCommand.CUT, cut, - sg.getStartRes(), sg.getEndRes() - sg.getStartRes() + 1, + addHistoryItem(new EditCommand( + MessageManager.getString("label.cut_sequences"), Action.CUT, + cut, sg.getStartRes(), sg.getEndRes() - sg.getStartRes() + 1, viewport.getAlignment())); viewport.setSelectionGroup(null); @@ -2240,7 +2274,14 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, if (alignPanel != null && (fr = alignPanel.getFeatureRenderer()) != null) { - return fr.getGroups(); + List gps = fr.getFeatureGroups(); + int p=0; + String[] _gps = new String[gps.size()]; + for (Object gp:gps) + { + _gps[p++] = gp.toString(); + } + return _gps; } return null; } @@ -2258,7 +2299,14 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, if (alignPanel != null && (fr = alignPanel.getFeatureRenderer()) != null) { - return fr.getGroups(visible); + List gps = fr.getGroups(visible); + int p=0; + String[] _gps = new String[gps.size()]; + for (Object gp:gps) + { + _gps[p++] = gp.toString(); + } + return _gps; } return null; } @@ -2275,11 +2323,12 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { FeatureRenderer fr = null; this.sequenceFeatures.setState(true); - viewport.showSequenceFeatures(true); + viewport.setShowSequenceFeatures(true); if (alignPanel != null && (fr = alignPanel.getFeatureRenderer()) != null) { - fr.setGroupState(groups, state); + + fr.setGroupVisibility((List)Arrays.asList(groups), state); alignPanel.seqPanel.seqCanvas.repaint(); if (alignPanel.overviewPanel != null) { @@ -3656,6 +3705,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } pdbentry.getProperty().put("protocol", protocol); toaddpdb.addPDBId(pdbentry); + alignPanel.getStructureSelectionManager() + .registerPDBEntry(pdbentry); } } return true;