X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignFrame.java;h=1fd4231ee4d203a885fc7fd827a571ed20f23fe8;hb=aa91e8c4561c2dd0f18760e18fb0052979733bf8;hp=93bd155b2a3216abc36b44636fa6985bbcc2d6ad;hpb=c640b1c17cbfbc41723b0441f049cd416267dcc3;p=jalview.git diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index 93bd155..1fd4231 100644 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -20,46 +20,13 @@ */ package jalview.appletgui; -import java.awt.BorderLayout; -import java.awt.Canvas; -import java.awt.CheckboxMenuItem; -import java.awt.Color; -import java.awt.Font; -import java.awt.FontMetrics; -import java.awt.Frame; -import java.awt.Graphics; -import java.awt.Label; -import java.awt.Menu; -import java.awt.MenuBar; -import java.awt.MenuItem; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.FocusEvent; -import java.awt.event.FocusListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.io.IOException; -import java.net.URL; -import java.net.URLEncoder; -import java.util.Arrays; -import java.util.Deque; -import java.util.HashMap; -import java.util.Hashtable; -import java.util.List; -import java.util.Map; -import java.util.StringTokenizer; -import java.util.Vector; - import jalview.analysis.AlignmentSorter; import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder; import jalview.api.AlignViewControllerGuiI; import jalview.api.AlignViewControllerI; import jalview.api.AlignViewportI; import jalview.api.FeatureRenderer; +import jalview.api.FeatureSettingsControllerI; import jalview.api.SequenceStructureBinding; import jalview.bin.JalviewLite; import jalview.commands.CommandI; @@ -70,6 +37,7 @@ import jalview.commands.RemoveGapColCommand; import jalview.commands.RemoveGapsCommand; import jalview.commands.SlideSequencesCommand; import jalview.commands.TrimRegionCommand; +import jalview.controller.AlignViewController; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; @@ -79,9 +47,11 @@ import jalview.datamodel.PDBEntry; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; +import jalview.io.AlignmentProperties; import jalview.io.AnnotationFile; import jalview.io.AppletFormatAdapter; import jalview.io.FeaturesFile; +import jalview.io.NewickFile; import jalview.io.TCoffeeScoreFile; import jalview.schemes.Blosum62ColourScheme; import jalview.schemes.BuriedColourScheme; @@ -101,8 +71,46 @@ import jalview.schemes.TurnColourScheme; import jalview.schemes.ZappoColourScheme; import jalview.structure.StructureSelectionManager; import jalview.structures.models.AAStructureBindingModel; +import jalview.util.Comparison; import jalview.util.MappingUtils; import jalview.util.MessageManager; +import jalview.viewmodel.AlignmentViewport; + +import java.awt.BorderLayout; +import java.awt.Canvas; +import java.awt.CheckboxMenuItem; +import java.awt.Color; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Label; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.MenuItem; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.IOException; +import java.net.URL; +import java.net.URLEncoder; +import java.util.Arrays; +import java.util.Deque; +import java.util.HashMap; +import java.util.Hashtable; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.Vector; + +import org.jmol.viewer.Viewer; public class AlignFrame extends EmbmenuFrame implements ActionListener, ItemListener, KeyListener, AlignViewControllerGuiI @@ -155,6 +163,20 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, public AlignFrame(AlignmentI al, JalviewLite applet, String title, boolean embedded, boolean addToDisplay) { + this(al, null, null, applet, title, embedded, addToDisplay); + } + + public AlignFrame(AlignmentI al, SequenceI[] hiddenSeqs, + ColumnSelection columnSelection, JalviewLite applet, + String title, boolean embedded) + { + this(al, hiddenSeqs, columnSelection, applet, title, embedded, true); + } + + public AlignFrame(AlignmentI al, SequenceI[] hiddenSeqs, + ColumnSelection columnSelection, JalviewLite applet, + String title, boolean embedded, boolean addToDisplay) + { if (applet != null) { jalviewServletURL = applet.getParameter("APPLICATION_URL"); @@ -190,14 +212,24 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } } viewport = new AlignViewport(al, applet); + + if (hiddenSeqs != null && hiddenSeqs.length > 0) + { + viewport.hideSequence(hiddenSeqs); + } + if (columnSelection != null) + { + viewport.setColumnSelection(columnSelection); + } + alignPanel = new AlignmentPanel(this, viewport); - avc = new jalview.controller.AlignViewController(this, viewport, + avc = new AlignViewController(this, viewport, alignPanel); viewport.updateConservation(alignPanel); viewport.updateConsensus(alignPanel); displayNonconservedMenuItem.setState(viewport.getShowUnconserved()); - followMouseOverFlag.setState(viewport.getFollowHighlight()); + followMouseOverFlag.setState(viewport.isFollowHighlight()); showGroupConsensus.setState(viewport.isShowGroupConsensus()); showGroupConservation.setState(viewport.isShowGroupConservation()); showConsensusHistogram.setState(viewport.isShowConsensusHistogram()); @@ -338,7 +370,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, boolean featuresFile = false; try { - featuresFile = new jalview.io.FeaturesFile(file, type) + featuresFile = new FeaturesFile(file, type) .parse(viewport.getAlignment(), alignPanel.seqPanel.seqCanvas .getFeatureRenderer().getFeatureColours(), featureLinks, true, viewport.applet.getDefaultParameter( @@ -901,7 +933,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, : showForSequences); aa.visible = visible; } - alignPanel.validateAnnotationDimensions(false); + alignPanel.validateAnnotationDimensions(true); + validate(); + repaint(); } private void setAnnotationSortOrder(SequenceAnnotationOrder order) @@ -926,7 +960,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, private void mouseOverFlag_stateChanged() { - viewport.followHighlight = followMouseOverFlag.getState(); + viewport.setFollowHighlight(followMouseOverFlag.getState()); // TODO: could kick the scrollTo mechanism to reset view for current // searchresults. } @@ -1141,13 +1175,13 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } else if (source == alProperties) { - StringBuffer contents = new jalview.io.AlignmentProperties( + StringBuffer contents = new AlignmentProperties( viewport.getAlignment()).formatAsString(); CutAndPasteTransfer cap = new CutAndPasteTransfer(false, this); cap.setText(contents.toString()); Frame frame = new Frame(); frame.add(cap); - jalview.bin.JalviewLite.addFrame(frame, MessageManager.formatMessage( + JalviewLite.addFrame(frame, MessageManager.formatMessage( "label.alignment_properties", new String[] { getTitle() }), 400, 250); } @@ -1300,7 +1334,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, CutAndPasteTransfer cap = new CutAndPasteTransfer(true, this); Frame frame = new Frame(); frame.add(cap); - jalview.bin.JalviewLite.addFrame(frame, + JalviewLite.addFrame(frame, MessageManager.getString("label.input_cut_paste"), 500, 500); } @@ -1309,10 +1343,12 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, CutAndPasteTransfer cap = new CutAndPasteTransfer(true, this); Frame frame = new Frame(); frame.add(cap); - jalview.bin.JalviewLite.addFrame(frame, MessageManager.formatMessage( + JalviewLite.addFrame(frame, MessageManager.formatMessage( "label.alignment_output_command", new Object[] { e.getActionCommand() }), 600, 500); - cap.setText(new AppletFormatAdapter().formatSequences( + + FeatureRenderer fr = this.alignPanel.cloneFeatureRenderer(); + cap.setText(new AppletFormatAdapter(alignPanel).formatSequences( e.getActionCommand(), viewport.getAlignment(), viewport.getShowJVSuffix())); } @@ -1325,7 +1361,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, cap.setAnnotationImport(); Frame frame = new Frame(); frame.add(cap); - jalview.bin.JalviewLite.addFrame(frame, + JalviewLite.addFrame(frame, MessageManager.getString("action.paste_annotations"), 400, 300); } @@ -1340,7 +1376,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, CutAndPasteTransfer cap = new CutAndPasteTransfer(false, this); Frame frame = new Frame(); frame.add(cap); - jalview.bin.JalviewLite.addFrame(frame, + JalviewLite.addFrame(frame, MessageManager.getString("label.annotations"), 600, 500); cap.setText(annotation); } @@ -1390,7 +1426,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } Frame frame = new Frame(); frame.add(cap); - jalview.bin.JalviewLite.addFrame(frame, + JalviewLite.addFrame(frame, MessageManager.getString("label.features"), 600, 500); cap.setText(features); } @@ -1594,7 +1630,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, viewport.addToRedoList(command); command.undoCommand(null); - AlignViewport originalSource = getOriginatingSource(command); + AlignmentViewport originalSource = getOriginatingSource(command); // JBPNote Test if (originalSource != viewport) { @@ -1626,7 +1662,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, viewport.addToHistoryList(command); command.doCommand(null); - AlignViewport originalSource = getOriginatingSource(command); + AlignmentViewport originalSource = getOriginatingSource(command); // JBPNote Test if (originalSource != viewport) { @@ -1642,9 +1678,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, .getAlignment().getSequences()); } - AlignViewport getOriginatingSource(CommandI command) + AlignmentViewport getOriginatingSource(CommandI command) { - AlignViewport originalSource = null; + AlignmentViewport originalSource = null; // For sequence removal and addition, we need to fire // the property change event FROM the viewport where the // original alignment was altered @@ -1886,7 +1922,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, for (int j = 0; j < sg.getEndRes() + 1 && j < seq.getLength(); j++) { ch = seq.getCharAt(j); - if (!jalview.util.Comparison.isGap((ch))) + if (!Comparison.isGap((ch))) { endRes++; } @@ -1966,7 +2002,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } } - jalview.bin.JalviewLite.addFrame(af, newtitle, frameWidth, + JalviewLite.addFrame(af, newtitle, frameWidth, frameHeight); } else @@ -2518,7 +2554,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, OverviewPanel overview = new OverviewPanel(alignPanel); frame.add(overview); // +50 must allow for applet frame window - jalview.bin.JalviewLite.addFrame(frame, MessageManager.formatMessage( + JalviewLite.addFrame(frame, MessageManager.formatMessage( "label.overview_params", new String[] { this.getTitle() }), overview.getPreferredSize().width, overview.getPreferredSize().height + 50); @@ -2541,7 +2577,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } - void changeColour(ColourSchemeI cs) + public void changeColour(ColourSchemeI cs) { int threshold = 0; @@ -2571,8 +2607,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, alignPanel.getOverviewPanel().updateOverviewImage(); } - jalview.structure.StructureSelectionManager - .getStructureSelectionManager(viewport.applet) + StructureSelectionManager.getStructureSelectionManager(viewport.applet) .sequenceColoursChanged(alignPanel); alignPanel.paintAlignment(true); @@ -2675,7 +2710,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { Frame frame = new Frame(); frame.add(new PairwiseAlignPanel(alignPanel)); - jalview.bin.JalviewLite.addFrame(frame, + JalviewLite.addFrame(frame, MessageManager.getString("action.pairwise_alignment"), 600, 500); } @@ -2767,7 +2802,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, addTreeMenuItem(tp, title); - jalview.bin.JalviewLite.addFrame(tp, title, 600, 500); + JalviewLite.addFrame(tp, title, 600, 500); } } @@ -2778,15 +2813,15 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, cap.setTreeImport(); Frame frame = new Frame(); frame.add(cap); - jalview.bin.JalviewLite.addFrame(frame, + JalviewLite.addFrame(frame, MessageManager.getString("label.paste_newick_file"), 400, 300); } - public void loadTree(jalview.io.NewickFile tree, String treeFile) + public void loadTree(NewickFile tree, String treeFile) { TreePanel tp = new TreePanel(alignPanel, treeFile, MessageManager.getString("label.load_tree_from_file"), tree); - jalview.bin.JalviewLite.addFrame(tp, treeFile, 600, 500); + JalviewLite.addFrame(tp, treeFile, 600, 500); addTreeMenuItem(tp, treeFile); } @@ -2936,7 +2971,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, Frame frame = new Frame(); frame.add(new AboutPanel(JalviewLite.getVersion(), JalviewLite .getBuildDate())); - jalview.bin.JalviewLite.addFrame(frame, + JalviewLite.addFrame(frame, MessageManager.getString("label.jalview"), 580, 220); } @@ -3166,11 +3201,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, inputText.addActionListener(this); Menu outputTextboxMenu = new Menu( MessageManager.getString("label.out_to_textbox")); - for (int i = 0; i < jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS.length; i++) + for (int i = 0; i < AppletFormatAdapter.WRITEABLE_FORMATS.length; i++) { - MenuItem item = new MenuItem( - jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS[i]); + MenuItem item = new MenuItem(AppletFormatAdapter.WRITEABLE_FORMATS[i]); item.addActionListener(new java.awt.event.ActionListener() { @@ -3740,6 +3774,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, private CheckboxMenuItem showAutoLast; + private SplitFrame splitFrame; + /** * Attach the alignFrame panels after embedding menus, if necessary. This used * to be called setEmbedded, but is now creates the dropdown menus in a @@ -3772,7 +3808,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, add(statusBar, BorderLayout.SOUTH); add(alignPanel, BorderLayout.CENTER); // and register with the applet so it can pass external API calls to us - jalview.bin.JalviewLite.addFrame(this, this.getTitle(), + JalviewLite.addFrame(this, this.getTitle(), frameWidth, frameHeight); } @@ -3840,10 +3876,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, public SequenceStructureBinding addStructureViewInstance( Object jmolviewer, String[] sequenceIds) { - org.jmol.api.JmolViewer viewer = null; + Viewer viewer = null; try { - viewer = (org.jmol.api.JmolViewer) jmolviewer; + viewer = (Viewer) jmolviewer; } catch (ClassCastException ex) { System.err.println("Unsupported viewer object :" @@ -4030,12 +4066,12 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { // can only do alignments with Jmol // find the last jmol window assigned to this alignment - jalview.appletgui.AppletJmol ajm = null, tajm; + AppletJmol ajm = null, tajm; Vector jmols = applet - .getAppletWindow(jalview.appletgui.AppletJmol.class); +.getAppletWindow(AppletJmol.class); for (int i = 0, iSize = jmols.size(); i < iSize; i++) { - tajm = (jalview.appletgui.AppletJmol) jmols.elementAt(i); + tajm = (AppletJmol) jmols.elementAt(i); if (tajm.ap.alignFrame == this) { ajm = tajm; @@ -4054,8 +4090,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, // otherwise, create a new window if (applet.jmolAvailable) { - new jalview.appletgui.AppletJmol(pdb, seqs, chains, alignPanel, - protocol); + new AppletJmol(pdb, seqs, chains, alignPanel, protocol); applet.lastFrameX += 40; applet.lastFrameY += 40; } @@ -4166,4 +4201,45 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, return false; } + public SplitFrame getSplitFrame() + { + return this.splitFrame; + } + + public void setSplitFrame(SplitFrame sf) + { + this.splitFrame = sf; + } + + // may not need this + @Override + public void setShowSeqFeatures(boolean b) + { + // showSeqFeatures.setSelected(b); + viewport.setShowSequenceFeatures(b); + + } + + @Override + public void setMenusForViewport() + { + // setMenusFromViewport(viewport); + + } + @Override + public void refreshFeatureUI(boolean enableIfNecessary) + { + if (enableIfNecessary) + { + sequenceFeatures.setState(true); + alignPanel.av.setShowSequenceFeatures(true); + } + } + + @Override + public FeatureSettingsControllerI getFeatureSettingsUI() + { + return alignPanel.av.featureSettings; + } + }