X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=3082f74c6fdcdb02f1ea084abc8ed1071c9c454a;hb=5d455c2d0b8b1ac94d82584e2885654693abb39f;hp=7ef0e25a376a6bd3d2dff12cb705234021def210;hpb=488e3a038c2ba1a3926f2af5eaea97ba76e028d0;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 7ef0e25..3082f74 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,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener /** DOCUMENT ME!! */ - public String currentFileFormat = null; + String currentFileFormat = null; + + String fileName = null; - private int treeCount = 0; /** * Creates a new AlignFrame object. @@ -144,12 +147,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) @@ -163,49 +171,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener switch (evt.getKeyCode()) { - case KeyEvent.VK_V: - if (!evt.isControlDown()) - { - AlignmentI al; - if(viewport.hasHiddenRows) - { - al = viewport.alignment.getHiddenSequences().getFullAlignment(); - } - else - al = new Alignment(viewport.alignment.getSequencesArray()); - - AlignViewport newview = new AlignViewport(al); - - if(viewport.viewName==null) - viewport.viewName="View 1"; - - newview.historyList = viewport.historyList; - newview.redoList = viewport.redoList; - - newview.sequenceSetID = viewport.getSequenceSetId(); - newview.viewName = "View " + - (Desktop.getViewCount(viewport.getSequenceSetId())+1); - - AlignmentPanel newap = new AlignmentPanel(af, newview); - - PaintRefresher.Register(newap, viewport.getSequenceSetId()); - PaintRefresher.Register(alignPanel, viewport.getSequenceSetId()); - - addAlignmentPanel(newap, true); - 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); @@ -345,7 +310,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener SequenceGroup sg = viewport.getSelectionGroup(); if (toggleSeqs) { - if (sg != null && sg.getSize(false) != viewport.alignment.getHeight()) + if (sg != null && sg.getSize() != viewport.alignment.getHeight()) { hideSelSequences_actionPerformed(null); hide = true; @@ -396,6 +361,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); @@ -408,24 +375,35 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener { if (aSize == 2) { - AlignmentPanel first = (AlignmentPanel) alignPanels.firstElement(); - tabbedPane.addTab(first.av.viewName==null?"Original":first.av.viewName,first); - - this.getContentPane().add(tabbedPane, BorderLayout.CENTER); + setInitialTabVisible(); } - tabbedPane.addTab(ap.av.viewName==null?"Original":ap.av.viewName, ap); + expandViews.setEnabled(true); + gatherViews.setEnabled(true); + tabbedPane.addTab(ap.av.viewName, ap); ap.setVisible(false); } if(newPanel) { - ap.av.updateConsensus(ap); + if (ap.av.padGaps) + ap.av.alignment.padGaps(); ap.av.updateConservation(ap); + ap.av.updateConsensus(ap); } } + public void setInitialTabVisible() + { + expandViews.setEnabled(true); + gatherViews.setEnabled(true); + tabbedPane.setVisible(true); + AlignmentPanel first = (AlignmentPanel) alignPanels.firstElement(); + tabbedPane.addTab(first.av.viewName,first); + this.getContentPane().add(tabbedPane, BorderLayout.CENTER); + } + public AlignViewport getViewport() { @@ -460,7 +438,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener { // System.out.println("deregistering discoverer listener"); Desktop.discoverer.removePropertyChangeListener(thisListener); - closeMenuItem_actionPerformed(null); + closeMenuItem_actionPerformed(true); } ; }); @@ -486,12 +464,17 @@ 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.rightAlignIds); renderGapsMenuItem.setSelected(av.renderGaps); wrapMenuItem.setSelected(av.wrapAlignment); + scaleAbove.setVisible(av.wrapAlignment); + scaleLeft.setVisible(av.wrapAlignment); + scaleRight.setVisible(av.wrapAlignment); annotationPanelMenuItem.setState(av.showAnnotation); viewBoxesMenuItem.setSelected(av.showBoxes); viewTextMenuItem.setSelected(av.showText); @@ -502,7 +485,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(); } @@ -573,6 +555,59 @@ 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")) + { + JInternalFrame [] frames = Desktop.desktop.getAllFrames(); + for(int i=0; i 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, viewport.alignment.getSequences()); + + 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); @@ -583,12 +618,24 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener Desktop.instance.inputURLMenuItem_actionPerformed(viewport); } + + public void save_actionPerformed(ActionEvent e) + { + if(fileName==null + || currentFileFormat==null + || fileName.startsWith("http") + ) + saveAs_actionPerformed(null); + else + saveAlignment(fileName, currentFileFormat); + } + /** * DOCUMENT ME! * * @param e DOCUMENT ME! */ - public void saveAlignmentMenu_actionPerformed(ActionEvent e) + public void saveAs_actionPerformed(ActionEvent e) { JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache. getProperty( "LAST_DIRECTORY"), @@ -609,7 +656,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener if (value == JalviewFileChooser.APPROVE_OPTION) { currentFileFormat = chooser.getSelectedFormat(); - if (currentFileFormat == null) { JOptionPane.showInternalMessageDialog(Desktop.desktop, @@ -620,18 +666,21 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener return; } + fileName = chooser.getSelectedFile().getPath(); + jalview.bin.Cache.setProperty("DEFAULT_FILE_FORMAT", currentFileFormat); - String choice = chooser.getSelectedFile().getPath(); - jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice); + jalview.bin.Cache.setProperty("LAST_DIRECTORY", fileName); - saveAlignment(choice, currentFileFormat); + saveAlignment(fileName, currentFileFormat); } } public boolean saveAlignment(String file, String format) { + boolean success = true; + if (format.equalsIgnoreCase("Jalview")) { String shortName = title; @@ -642,10 +691,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener java.io.File.separatorChar) + 1); } - new Jalview2XML().SaveAlignment(this, file, shortName); + success = new Jalview2XML().SaveAlignment(this, file, shortName); + + statusBar.setText("Successfully saved to file: " + +fileName+" in " + +format +" format."); - // USE Jalview2XML to save this file - return true; } else { @@ -671,25 +722,37 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener if (output == null) { - return false; - } - - try - { - java.io.PrintWriter out = new java.io.PrintWriter( - new java.io.FileWriter(file)); - - out.print(output); - out.close(); - this.setTitle(file); - return true; + success = false; } - catch (Exception ex) + else { - ex.printStackTrace(); + try + { + java.io.PrintWriter out = new java.io.PrintWriter( + new java.io.FileWriter(file)); + + out.print(output); + out.close(); + this.setTitle(file); + statusBar.setText("Successfully saved to file: " + + fileName + " in " + + format + " format."); + } + catch (Exception ex) + { + success = false; + ex.printStackTrace(); + } } } - return false; + + if (!success) + JOptionPane.showInternalMessageDialog( + this, "Couldn't save file: " + fileName, + "Error Saving File", + JOptionPane.WARNING_MESSAGE); + + return success; } /** @@ -716,6 +779,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener } CutAndPasteTransfer cap = new CutAndPasteTransfer(); + cap.setForInput(null); Desktop.addInternalFrame(cap, "Alignment output - " + e.getActionCommand(), 600, 500); @@ -764,6 +828,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener alignPanel.makeEPS(f); } + + public void pageSetup_actionPerformed(ActionEvent e) + { + PrinterJob printJob = PrinterJob.getPrinterJob(); + PrintThread.pf = printJob.pageDialog(printJob.defaultPage()); + } + /** * DOCUMENT ME! * @@ -772,7 +843,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener public void printMenuItem_actionPerformed(ActionEvent e) { //Putting in a thread avoids Swing painting problems - PrintThread thread = new PrintThread(); + PrintThread thread = new PrintThread(alignPanel); thread.start(); } @@ -786,7 +857,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener { new AnnotationExporter().exportAnnotations( alignPanel, - viewport.alignment.getAlignmentAnnotation() + viewport.alignment.getAlignmentAnnotation(), + viewport.alignment.getGroups() ); } @@ -818,28 +890,46 @@ 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(); + + alignPanels.removeElement(alignPanel); + PaintRefresher.RemoveComponent(alignPanel.seqPanel.seqCanvas); + PaintRefresher.RemoveComponent(alignPanel.idPanel.idCanvas); + PaintRefresher.RemoveComponent(alignPanel); + alignPanel = null; + viewport = null; + + tabbedPane.removeTabAt(index); + 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) { @@ -905,10 +995,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener viewport.redoList.push(command); command.undoCommand(); - viewport.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null; + AlignViewport originalSource = getOriginatingSource(command); updateEditMenuBar(); - viewport.firePropertyChange("alignment", null, - viewport.getAlignment().getSequences()); + + if(originalSource!=null) + { + originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null; + originalSource.firePropertyChange("alignment", + null, + originalSource.alignment.getSequences()); + } } /** @@ -918,15 +1014,64 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener */ protected void redoMenuItem_actionPerformed(ActionEvent e) { + if(viewport.redoList.size()<1) + return; + CommandI command = (CommandI) viewport.redoList.pop(); viewport.historyList.push(command); command.doCommand(); - viewport.hasHiddenColumns = viewport.colSel.getHiddenColumns()!=null; + AlignViewport originalSource = getOriginatingSource(command); updateEditMenuBar(); - viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); + + if(originalSource!=null) + { + originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null; + originalSource.firePropertyChange("alignment", + null, + originalSource.alignment.getSequences()); + } } + AlignViewport getOriginatingSource(CommandI command) + { + AlignViewport originalSource = null; + //For sequence removal and addition, we need to fire + //the property change event FROM the viewport where the + //original alignment was altered + AlignmentI al=null; + if (command instanceof EditCommand) + { + EditCommand editCommand = (EditCommand) command; + 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; + } + } + } + } + + if (originalSource == null) + { + //The original view is closed, we must validate + //the current view against the closed view first + if (al != null) + PaintRefresher.validateSequences(al, viewport.alignment); + + originalSource = viewport; + } + + return originalSource; + } /** * DOCUMENT ME! @@ -948,14 +1093,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener { SequenceI seq = viewport.alignment.getSequenceAt(i); - if (!sg.getSequences(false).contains(seq)) + if (!sg.getSequences(null).contains(seq)) { continue; } SequenceI temp = viewport.alignment.getSequenceAt(i - 1); - if (sg.getSequences(false).contains(temp)) + if (sg.getSequences(null).contains(temp)) { continue; } @@ -970,14 +1115,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener { SequenceI seq = viewport.alignment.getSequenceAt(i); - if (!sg.getSequences(false).contains(seq)) + if (!sg.getSequences(null).contains(seq)) { continue; } SequenceI temp = viewport.alignment.getSequenceAt(i + 1); - if (sg.getSequences(false).contains(temp)) + if (sg.getSequences(null).contains(temp)) { continue; } @@ -1022,6 +1167,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener try { + jalview.gui.Desktop.internalCopy = true; //Its really worth setting the clipboard contents //to empty before setting the large StringSelection!! Toolkit.getDefaultToolkit().getSystemClipboard() @@ -1149,7 +1295,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener } else { - sequences = new FormatAdapter().readFile(str, "Paste", format); + sequences = new FormatAdapter().readFile(str, "Paste", format).getSequencesArray(); } AlignmentI alignment = null; @@ -1290,7 +1436,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(); @@ -1300,20 +1446,16 @@ 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++) + for (int i = 0; i < sg.getSize(); i++) { seq = sg.getSequenceAt(i); seqs.addElement(seq); - if(seq.getLength()<=cutLength) - seqsCut = true; } // If the cut affects all sequences, remove highlighted columns - if (sg.getSize(false) == viewport.alignment.getHeight()) + if (sg.getSize() == viewport.alignment.getHeight()) { viewport.getColumnSelection().removeElements(sg.getStartRes(), sg.getEndRes() + 1); @@ -1362,6 +1504,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener protected void deleteGroups_actionPerformed(ActionEvent e) { viewport.alignment.deleteAllGroups(); + viewport.sequenceColours = null; viewport.setSelectionGroup(null); PaintRefresher.Refresh(this, viewport.getSequenceSetId()); alignPanel.repaint(); @@ -1406,7 +1549,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()); } /** @@ -1431,7 +1574,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener sg.addOrRemove(viewport.getAlignment().getSequenceAt(i), false); } - PaintRefresher.Refresh(this, viewport.getSequenceSetId()); + alignPanel.repaint(); + + PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId()); } public void invertColSel_actionPerformed(ActionEvent e) @@ -1475,7 +1620,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener SequenceI [] seqs; if(viewport.getSelectionGroup()!=null) - seqs = viewport.getSelectionGroup().getSequencesAsArray(true); + seqs = viewport.getSelectionGroup().getSequencesAsArray(viewport.hiddenRepSequences); else seqs = viewport.alignment.getSequencesArray(); @@ -1490,6 +1635,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener viewport.alignment, viewport.colSel, viewport.selectionGroup); + viewport.setStartRes(0); } else { @@ -1537,7 +1683,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener SequenceI[] seqs; if (viewport.getSelectionGroup() != null) { - seqs = viewport.getSelectionGroup().getSequencesAsArray(true); + seqs = viewport.getSelectionGroup().getSequencesAsArray(viewport.hiddenRepSequences); start = viewport.getSelectionGroup().getStartRes(); end = viewport.getSelectionGroup().getEndRes(); } @@ -1549,7 +1695,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener new RemoveGapColCommand("Remove Gapped Columns", seqs, start, end, - viewport.getGapCharacter()); + viewport.alignment); addHistoryItem(removeGapCols); @@ -1581,7 +1727,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener SequenceI[] seqs; if (viewport.getSelectionGroup() != null) { - seqs = viewport.getSelectionGroup().getSequencesAsArray(true); + seqs = viewport.getSelectionGroup().getSequencesAsArray(viewport.hiddenRepSequences); start = viewport.getSelectionGroup().getStartRes(); end = viewport.getSelectionGroup().getEndRes(); } @@ -1594,9 +1740,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener int startRes = seq.findPosition(viewport.startRes); addHistoryItem(new RemoveGapsCommand("Remove Gaps", - seqs, - start, end, - viewport.getGapCharacter())); + seqs, + start, end, + viewport.alignment)); viewport.setStartRes(seq.findIndex(startRes)-1); @@ -1625,13 +1771,63 @@ 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 = "Original"; + + newap.av.historyList = viewport.historyList; + newap.av.redoList = viewport.redoList; + + int index = Desktop.getViewCount(viewport.getSequenceSetId()); + String newViewName = "View " +index; + + Vector comps = (Vector)PaintRefresher.components.get(viewport.getSequenceSetId()); + Vector existingNames = new Vector(); + for(int i=0; i 0)) || + (viewport.getSelectionGroup().getSize() < 4) && + (viewport.getSelectionGroup().getSize() > 0)) || (viewport.getAlignment().getHeight() < 4)) { JOptionPane.showInternalMessageDialog(this, @@ -2364,7 +2566,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener return; } - new PCAPanel(viewport); + new PCAPanel(alignPanel); } @@ -2432,7 +2634,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener TreePanel tp; if (viewport.getSelectionGroup() != null) { - if (viewport.getSelectionGroup().getSize(false) < 3) { + if (viewport.getSelectionGroup().getSize() < 3) { JOptionPane.showMessageDialog(Desktop.desktop, "You need to have more than two sequences selected to build a tree!", "Not enough sequences", @@ -2444,9 +2646,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener SequenceGroup sg = viewport.getSelectionGroup(); /* Decide if the selection is a column region */ - while (s < sg.getSize(false)) + while (s < sg.getSize()) { - if ( ( (SequenceI) sg.getSequences(false).elementAt(s++)).getLength() < + if ( ( (SequenceI) sg.getSequences(null).elementAt(s++)).getLength() < sg.getEndRes()) { JOptionPane.showMessageDialog(Desktop.desktop, @@ -2484,9 +2686,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener tp = new TreePanel(alignPanel, type, pwType); } - addTreeMenuItem(tp, title); + title += " from "; - Desktop.addInternalFrame(tp, title + " from " + this.title, 600, 500); + if(viewport.viewName!=null) + title+= viewport.viewName+" of "; + + title += this.title; + + Desktop.addInternalFrame(tp, title, 600, 500); } /** @@ -2524,51 +2731,53 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener * @param treePanel Displayed tree window. * @param title SortBy menu item title. */ - void addTreeMenuItem(final TreePanel treePanel, String title) + public void buildTreeMenu() { - final JMenuItem item = new JMenuItem(title); + sortByTreeMenu.removeAll(); - treeCount++; - - if (treeCount == 1) - { - sort.add(sortByTreeMenu); - } - - sortByTreeMenu.add(item); - item.addActionListener(new java.awt.event.ActionListener() + Vector comps = (Vector)PaintRefresher.components.get(viewport.getSequenceSetId()); + Vector treePanels = new Vector(); + int i, iSize = comps.size(); + for(i=0; i 1)) + (viewport.getSelectionGroup().getSize() > 1)) { // JBPNote UGLY! To prettify, make SequenceGroup and Alignment conform to some common interface! /*SequenceGroup seqs = viewport.getSelectionGroup(); @@ -2624,7 +2833,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener AlignmentView seqs = null; if ( (viewport.getSelectionGroup() != null) && - (viewport.getSelectionGroup().getSize(false) > 0)) + (viewport.getSelectionGroup().getSize() > 0)) { seqs = viewport.getAlignmentView(true); } @@ -2724,7 +2933,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener Desktop.addInternalFrame(tp, title, w, h); - addTreeMenuItem(tp, title); } } catch (Exception ex) @@ -2735,28 +2943,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener return tp; } - class PrintThread - extends Thread - { - public void run() - { - PrinterJob printJob = PrinterJob.getPrinterJob(); - PageFormat pf = printJob.pageDialog(printJob.defaultPage()); - printJob.setPrintable(alignPanel, pf); - - if (printJob.printDialog()) - { - try - { - printJob.print(); - } - catch (Exception PrintException) - { - PrintException.printStackTrace(); - } - } - } - } /** * Generates menu items and listener event actions for web service clients @@ -3091,7 +3277,7 @@ public void drop(DropTargetDropEvent evt) } boolean isAnnotation = new AnnotationFile().readAnnotationFile(viewport. - alignment, file); + alignment, file, protocol); if (!isAnnotation) { @@ -3159,3 +3345,34 @@ public void drop(DropTargetDropEvent evt) return viewport; } } + +class PrintThread extends Thread +{ + AlignmentPanel ap; + public PrintThread(AlignmentPanel ap) + { + this.ap = ap; + } + static PageFormat pf; + public void run() + { + PrinterJob printJob = PrinterJob.getPrinterJob(); + + if (pf != null) + printJob.setPrintable(ap, pf); + else + printJob.setPrintable(ap); + + if (printJob.printDialog()) + { + try + { + printJob.print(); + } + catch (Exception PrintException) + { + PrintException.printStackTrace(); + } + } + } +}