X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=b5c257b3c167a46c53db328482e558490735c995;hb=6200addf078b7f7ace90597dc056dafc7fc602c1;hp=e44ccdc140091260439f56005ee38829c96d7c06;hpb=4b1c969e87feaefd4fb9c49ba3d6b828b3ce1a9c;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index e44ccdc..b5c257b 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -33,8 +33,8 @@ import jalview.api.AlignViewControllerGuiI; import jalview.api.AlignViewControllerI; import jalview.api.AlignViewportI; import jalview.api.AlignmentViewPanel; -//from JalviewLite imports import jalview.api.FeatureRenderer; import jalview.api.FeatureSettingsControllerI; +import jalview.api.FeatureSettingsModelI; import jalview.api.SplitContainerI; import jalview.api.ViewStyleI; import jalview.api.analysis.SimilarityParamsI; @@ -300,6 +300,9 @@ public class AlignFrame extends GAlignFrame } viewport = new AlignViewport(al, hiddenColumns, sequenceSetId, viewId); + // BH! new alignPanel must come later + // alignPanel = new AlignmentPanel(this, viewport); + // addAlignmentPanel(alignPanel, true); init(); } @@ -320,7 +323,10 @@ public class AlignFrame extends GAlignFrame { viewport.hideSequence(hiddenSeqs); } - init(); + // BH! new alignPanel must come later + //alignPanel = new AlignmentPanel(this, viewport); + //addAlignmentPanel(alignPanel, true); +init(); } /** @@ -335,6 +341,8 @@ public class AlignFrame extends GAlignFrame { viewport = ap.av; alignPanel = ap; + // BH! adding must come later + // addAlignmentPanel(ap, false); init(); } @@ -344,6 +352,7 @@ public class AlignFrame extends GAlignFrame */ void init() { + // BH! Here is where we create the panel; note the sequence boolean newPanel = (alignPanel == null); viewport.setShowAutocalculatedAbove(isShowAutoCalculatedAbove()); if (newPanel) @@ -366,7 +375,8 @@ public class AlignFrame extends GAlignFrame addAlignmentPanel(alignPanel, newPanel); // setBackground(Color.white); // BH 2019 - + + // BH meaning "without display, one way or another" if (!Jalview.isHeadlessMode()) { progressBar = new ProgressBar(this.statusPanel, this.statusBar); @@ -386,7 +396,7 @@ public class AlignFrame extends GAlignFrame // modifyPID.setEnabled(false); } - String sortby = jalview.bin.Cache.getDefault(Preferences.SORT_ALIGNMENT, + String sortby = Cache.getDefault(Preferences.SORT_ALIGNMENT, "No sort"); if (sortby.equals("Id")) @@ -398,6 +408,9 @@ public class AlignFrame extends GAlignFrame sortPairwiseMenuItem_actionPerformed(null); } + alignPanel.av + .setShowAutocalculatedAbove(isShowAutoCalculatedAbove()); + setMenusFromViewport(viewport); buildSortByAnnotationScoresMenu(); calculateTree.addActionListener(new ActionListener() @@ -414,24 +427,10 @@ public class AlignFrame extends GAlignFrame if (Desktop.getDesktopPane() != null) { this.setDropTarget(new java.awt.dnd.DropTarget(this, this)); - PropertyChangeListener serviceListener = (Platform.isJS() ? null - : addServiceListeners()); - addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() + if (!Platform.isJS()) { - @Override - public void internalFrameClosed( - javax.swing.event.InternalFrameEvent evt) - { - // System.out.println("deregistering discoverer listener"); - if (serviceListener != null) - { - Desktop.getInstance().removeJalviewPropertyChangeListener( - "services", serviceListener); - } - closeMenuItem_actionPerformed(true); - } - }); - + addServiceListeners(); + } setGUINucleotide(); } @@ -823,6 +822,7 @@ public class AlignFrame extends GAlignFrame { ap.av.getAlignment().padGaps(); } + // BH! important option for JalviewJS if (Jalview.getInstance().getStartCalculations()) { ap.av.updateConservation(ap); @@ -848,9 +848,11 @@ public class AlignFrame extends GAlignFrame } /* Set up intrinsic listeners for dynamically generated GUI bits. */ - private PropertyChangeListener addServiceListeners() + private void addServiceListeners() { - PropertyChangeListener serviceListener = new PropertyChangeListener() + PropertyChangeListener thisListener; + Desktop.getInstance().addJalviewPropertyChangeListener("services", + thisListener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) @@ -862,16 +864,26 @@ public class AlignFrame extends GAlignFrame @Override public void run() { - System.err.println("Rebuild WS Menu for service change"); + System.err.println( + "Rebuild WS Menu for service change"); BuildWebServiceMenu(); } }); } } - }; - - Desktop.getInstance().addJalviewPropertyChangeListener("services", - serviceListener); + }); + addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() + { + @Override + public void internalFrameClosed( + javax.swing.event.InternalFrameEvent evt) + { + // System.out.println("deregistering discoverer listener"); + Desktop.getInstance().removeJalviewPropertyChangeListener("services", + thisListener); + closeMenuItem_actionPerformed(true); + } + }); // Finally, build the menu once to get current service state new Thread(new Runnable() { @@ -881,7 +893,6 @@ public class AlignFrame extends GAlignFrame BuildWebServiceMenu(); } }).start(); - return serviceListener; } /** @@ -942,9 +953,8 @@ public class AlignFrame extends GAlignFrame scaleLeft.setVisible(av.getWrapAlignment()); scaleRight.setVisible(av.getWrapAlignment()); annotationPanelMenuItem.setState(av.isShowAnnotation()); - /* - * Show/hide annotations only enabled if annotation panel is shown - */ + // Show/hide annotations only enabled if annotation panel is shown + syncAnnotationMenuItems(); viewBoxesMenuItem.setSelected(av.getShowBoxes()); @@ -1086,9 +1096,14 @@ public class AlignFrame extends GAlignFrame DataSourceType protocol = fileName.startsWith("http:") ? DataSourceType.URL : DataSourceType.FILE; - loader.loadFile(viewport, - (fileObject == null ? fileName : fileObject), protocol, - currentFileFormat); + if (fileObject == null) + { + loader.LoadFile(fileName, protocol, currentFileFormat); + } + else + { + loader.loadFile(null, fileObject, protocol, currentFileFormat); + } } else { @@ -1100,11 +1115,11 @@ public class AlignFrame extends GAlignFrame if (fileObject == null) { - +// BH! Q: What about https? DataSourceType protocol = (fileName.startsWith("http:") ? DataSourceType.URL : DataSourceType.FILE); - newframe = loader.loadFileWaitTillLoaded(fileName, protocol, + newframe = loader.LoadFileWaitTillLoaded(fileName, protocol, currentFileFormat); } else @@ -1310,7 +1325,7 @@ public class AlignFrame extends GAlignFrame try { String tempFilePath = doBackup ? backupfiles.getTempFilePath() : file; - PrintWriter out = new PrintWriter( + PrintWriter out = new PrintWriter( new FileWriter(tempFilePath)); out.print(output); @@ -1569,6 +1584,11 @@ public class AlignFrame extends GAlignFrame if (closeAllTabs) { + if (featureSettings != null && featureSettings.isOpen()) + { + featureSettings.close(); + featureSettings = null; + } /* * this will raise an INTERNAL_FRAME_CLOSED event and this method will * be called recursively, with the frame now in 'closed' state @@ -2184,7 +2204,7 @@ public class AlignFrame extends GAlignFrame newGraphGroups.add(q, null); } newGraphGroups.set(newann.graphGroup, - new Integer(++fgroup)); + Integer.valueOf(++fgroup)); } newann.graphGroup = newGraphGroups.get(newann.graphGroup) .intValue(); @@ -2231,7 +2251,7 @@ public class AlignFrame extends GAlignFrame newGraphGroups.add(q, null); } newGraphGroups.set(newann.graphGroup, - new Integer(++fgroup)); + Integer.valueOf(++fgroup)); } newann.graphGroup = newGraphGroups.get(newann.graphGroup) .intValue(); @@ -2429,33 +2449,33 @@ public class AlignFrame extends GAlignFrame Runnable okAction = new Runnable() { - @Override - public void run() - { - SequenceI[] cut = sg.getSequences() - .toArray(new SequenceI[sg.getSize()]); - - addHistoryItem(new EditCommand( - MessageManager.getString("label.cut_sequences"), Action.CUT, - cut, sg.getStartRes(), sg.getEndRes() - sg.getStartRes() + 1, - viewport.getAlignment())); - - viewport.setSelectionGroup(null); - viewport.sendSelection(); - viewport.getAlignment().deleteGroup(sg); - - viewport.firePropertyChange("alignment", null, - viewport.getAlignment().getSequences()); - if (viewport.getAlignment().getHeight() < 1) - { - try - { - AlignFrame.this.setClosed(true); - } catch (Exception ex) - { - } - } - }}; + @Override + public void run() + { + SequenceI[] cut = sg.getSequences() + .toArray(new SequenceI[sg.getSize()]); + + addHistoryItem(new EditCommand( + MessageManager.getString("label.cut_sequences"), Action.CUT, + cut, sg.getStartRes(), sg.getEndRes() - sg.getStartRes() + 1, + viewport.getAlignment())); + + viewport.setSelectionGroup(null); + viewport.sendSelection(); + viewport.getAlignment().deleteGroup(sg); + + viewport.firePropertyChange("alignment", null, + viewport.getAlignment().getSequences()); + if (viewport.getAlignment().getHeight() < 1) + { + try + { + AlignFrame.this.setClosed(true); + } catch (Exception ex) + { + } + } + }}; /* * If the cut affects all sequences, prompt for confirmation @@ -2463,20 +2483,20 @@ public class AlignFrame extends GAlignFrame boolean wholeHeight = sg.getSize() == viewport.getAlignment().getHeight(); boolean wholeWidth = (((sg.getEndRes() - sg.getStartRes()) + 1) == viewport.getAlignment().getWidth()) ? true : false; - if (wholeHeight && wholeWidth) - { - JvOptionPane dialog = JvOptionPane.newOptionDialog(Desktop.getDesktopPane()); - dialog.setResponseHandler(0, okAction); // 0 = OK_OPTION - Object[] options = new Object[] { MessageManager.getString("action.ok"), - MessageManager.getString("action.cancel") }; - dialog.showDialog(MessageManager.getString("warn.delete_all"), - MessageManager.getString("label.delete_all"), - JvOptionPane.DEFAULT_OPTION, JvOptionPane.PLAIN_MESSAGE, null, - options, options[0]); - } else - { - okAction.run(); - } + if (wholeHeight && wholeWidth) + { + JvOptionPane dialog = JvOptionPane.newOptionDialog(Desktop.getDesktopPane()); + dialog.setResponseHandler(0, okAction); // 0 = OK_OPTION + Object[] options = new Object[] { MessageManager.getString("action.ok"), + MessageManager.getString("action.cancel") }; + dialog.showDialog(MessageManager.getString("warn.delete_all"), + MessageManager.getString("label.delete_all"), + JvOptionPane.DEFAULT_OPTION, JvOptionPane.PLAIN_MESSAGE, null, + options, options[0]); + } else + { + okAction.run(); + } } /** @@ -3276,9 +3296,15 @@ public class AlignFrame extends GAlignFrame @Override public void featureSettings_actionPerformed(ActionEvent e) { + showFeatureSettingsUI(); + } + + @Override + public FeatureSettingsControllerI showFeatureSettingsUI() + { if (featureSettings != null) { - featureSettings.close(); + featureSettings.closeOldSettings(); featureSettings = null; } if (!showSeqFeatures.isSelected()) @@ -3288,6 +3314,7 @@ public class AlignFrame extends GAlignFrame showSeqFeatures_actionPerformed(null); } featureSettings = new FeatureSettings(this); + return featureSettings; } /** @@ -4695,6 +4722,7 @@ public class AlignFrame extends GAlignFrame // associating PDB files which have no IDs. for (SequenceI toassoc : (SequenceI[]) fm[2]) { + // BH! check PDBEntry pe = AssociatePdbFileWithSeq .associatePdbWithSeq(fm[0].toString(), (DataSourceType) fm[1], toassoc, false); @@ -4862,12 +4890,24 @@ public class AlignFrame extends GAlignFrame { if (parseFeaturesFile(file, sourceType)) { + SplitFrame splitFrame = (SplitFrame) getSplitViewContainer(); + if (splitFrame != null) + { + splitFrame.repaint(); + } + else + { alignPanel.paintAlignment(true, true); } } + } else { - new FileLoader().loadFile(viewport, file, sourceType, format); + if (file instanceof File) { + new FileLoader().loadFile(viewport, (File) file, sourceType, format); + } else { + new FileLoader().LoadFile(viewport, (String) file, sourceType, format); + } } } } @@ -4926,6 +4966,21 @@ public class AlignFrame extends GAlignFrame viewport = alignPanel.av; avc.setViewportAndAlignmentPanel(viewport, alignPanel); setMenusFromViewport(viewport); + if (featureSettings != null && featureSettings.isOpen() + && featureSettings.fr.getViewport() != viewport) + { + if (viewport.isShowSequenceFeatures()) + { + // refresh the featureSettings to reflect UI change + showFeatureSettingsUI(); + } + else + { + // close feature settings for this view. + featureSettings.close(); + } + } + } /* @@ -5149,6 +5204,13 @@ public class AlignFrame extends GAlignFrame @Override public void finished() { + + for (FeatureSettingsModelI srcSettings : dbRefFetcher + .getFeatureSettingsModels()) + { + + alignPanel.av.mergeFeaturesStyle(srcSettings); + } AlignFrame.this.setMenusForViewport(); } }); @@ -5195,6 +5257,7 @@ public class AlignFrame extends GAlignFrame } if (otherdb.size() == 1) { + // BH cleaner code DbSourceProxy src = otherdb.get(0); DbSourceProxy[] dassource = new DbSourceProxy[] { src }; @@ -5225,6 +5288,10 @@ public class AlignFrame extends GAlignFrame @Override public void finished() { + FeatureSettingsModelI srcSettings = dassource[0] + .getFeatureColourScheme(); + alignPanel.av.mergeFeaturesStyle( + srcSettings); AlignFrame.this.setMenusForViewport(); } }); @@ -5855,6 +5922,20 @@ public class AlignFrame extends GAlignFrame } + + private Rectangle lastFeatureSettingsBounds = null; + @Override + public void setFeatureSettingsGeometry(Rectangle bounds) + { + lastFeatureSettingsBounds = bounds; + } + + @Override + public Rectangle getFeatureSettingsGeometry() + { + return lastFeatureSettingsBounds; + } + /** * BH 2019 from JalviewLite *