extends GAlignFrame implements DropTargetListener, FeatureListener
{
/** DOCUMENT ME!! */
- public static final int NEW_WINDOW_WIDTH = 700;
+ public static final int DEFAULT_WIDTH = 700;
/** DOCUMENT ME!! */
- public static final int NEW_WINDOW_HEIGHT = 500;
- AlignmentPanel alignPanel;
+ public static final int DEFAULT_HEIGHT = 500;
+ public AlignmentPanel alignPanel;
AlignViewport viewport;
+
+ Vector alignPanels = new Vector();
+
+
/** DOCUMENT ME!! */
public String currentFileFormat = null;
Stack historyList = new Stack();
private int treeCount = 0;
/**
+ * Creates a new AlignFrame object.
+ *
+ * @param al DOCUMENT ME!
+ */
+ public AlignFrame(AlignmentI al, int width, int height)
+ {
+ this(al, null, width, height);
+ }
+
+
+ /**
* new alignment window with hidden columns
* @param al AlignmentI
* @param hiddenColumns ColumnSelection or null
*/
- public AlignFrame(AlignmentI al, ColumnSelection hiddenColumns) {
-
+ public AlignFrame(AlignmentI al, ColumnSelection hiddenColumns,
+ int width, int height)
+ {
+ this.setSize(width, height);
viewport = new AlignViewport(al, hiddenColumns);
+ alignPanel = new AlignmentPanel(this, viewport);
+
+ if(al.getDataset()==null)
+ {
+ al.setDataset(null);
+ }
+
+ addAlignmentPanel(alignPanel);
+ init();
+ }
+
+ /**
+ * Make a new AlignFrame from exisiting alignmentPanels
+ * @param ap AlignmentPanel
+ * @param av AlignViewport
+ */
+ public AlignFrame(AlignmentPanel ap)
+ {
+ viewport = ap.av;
+ alignPanel = ap;
+ addAlignmentPanel(ap);
+ init();
+ }
+
+ void init()
+ {
this.setDropTarget(new java.awt.dnd.DropTarget(this, this));
- if(viewport.vconsensus==null)
+ if (viewport.vconsensus == null)
{
//Out of memory calculating consensus.
BLOSUM62Colour.setEnabled(false);
modifyPID.setEnabled(false);
}
- alignPanel = new AlignmentPanel(this, viewport);
-
String sortby = jalview.bin.Cache.getDefault("SORT_ALIGNMENT", "No sort");
- if(sortby.equals("Id"))
+ if (sortby.equals("Id"))
sortIDMenuItem_actionPerformed(null);
- else if(sortby.equals("Pairwise Identity"))
+ else if (sortby.equals("Pairwise Identity"))
sortPairwiseMenuItem_actionPerformed(null);
- // remove(tabbedPane);
- getContentPane().add(alignPanel, BorderLayout.CENTER);
+ if (Desktop.desktop != null)
+ {
+ addServiceListeners();
+ setGUINucleotide(viewport.alignment.isNucleotide());
+ }
+ if (jalview.bin.Cache.getDefault("WRAP_ALIGNMENT", false))
+ {
+ wrapMenuItem.setSelected(true);
+ wrapMenuItem_actionPerformed(null);
+ }
+ addKeyListener();
+ }
- // tabbedPane.add(al.isNucleotide() ? "DNA":"Protein", alignPanel);
+ void addKeyListener()
+ {
+ final AlignFrame af = this;
+ addKeyListener(new KeyAdapter()
+ {
+ public void keyPressed(KeyEvent evt)
+ {
+ if (viewport.cursorMode
+ && evt.getKeyCode() >= KeyEvent.VK_0
+ && evt.getKeyCode() <= KeyEvent.VK_9)
+ {
+ alignPanel.seqPanel.numberPressed(evt.getKeyChar());
+ }
- ///Dataset tab
- /////////////////////////
- if(al.getDataset()==null)
+ 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);
+
+ AlignmentPanel copy = new AlignmentPanel(af, newview);
+
+ if(viewport.viewName==null)
+ viewport.viewName="View 1";
+
+ copy.av.sequenceSetID = viewport.getSequenceSetId();
+ copy.av.viewName = "View " +
+ (Desktop.getViewCount(viewport.getSequenceSetId())+1);
+
+
+ addAlignmentPanel(copy);
+ PaintRefresher.Register(copy, viewport.getSequenceSetId());
+ PaintRefresher.Register(alignPanel,
+ viewport.getSequenceSetId());
+
+ }
+ 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);
+
+ break;
+
+ case KeyEvent.VK_DOWN:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.moveCursor(0, 1);
+ }
+ else
+ moveSelectedSequences(false);
+ break;
+
+ case KeyEvent.VK_UP:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.moveCursor(0, -1);
+ }
+ else
+ moveSelectedSequences(true);
+ break;
+
+ case KeyEvent.VK_LEFT:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.moveCursor( -1, 0);
+ }
+ break;
+
+ case KeyEvent.VK_RIGHT:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.moveCursor(1, 0);
+ }
+ break;
+
+ case KeyEvent.VK_SPACE:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.insertGapAtCursor(evt.isControlDown()
+ || evt.isShiftDown()
+ || evt.isAltDown());
+ }
+ break;
+
+ case KeyEvent.VK_DELETE:
+ case KeyEvent.VK_BACK_SPACE:
+ if (!viewport.cursorMode)
+ {
+ cut_actionPerformed(null);
+ }
+ else
+ alignPanel.seqPanel.deleteGapAtCursor(evt.isControlDown()
+ || evt.isShiftDown()
+ || evt.isAltDown());
+
+ break;
+
+ case KeyEvent.VK_S:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.setCursorRow();
+ }
+ break;
+ case KeyEvent.VK_C:
+ if (viewport.cursorMode && !evt.isControlDown())
+ {
+ alignPanel.seqPanel.setCursorColumn();
+ }
+ break;
+ case KeyEvent.VK_P:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.setCursorPosition();
+ }
+ break;
+
+ case KeyEvent.VK_ENTER:
+ case KeyEvent.VK_COMMA:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.setCursorRowAndColumn();
+ }
+ break;
+
+ case KeyEvent.VK_Q:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.setSelectionAreaAtCursor(true);
+ }
+ break;
+ case KeyEvent.VK_M:
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.setSelectionAreaAtCursor(false);
+ }
+ break;
+
+ case KeyEvent.VK_F2:
+ viewport.cursorMode = !viewport.cursorMode;
+ statusBar.setText("Keyboard editing mode is " +
+ (viewport.cursorMode ? "on" : "off"));
+ if (viewport.cursorMode)
+ {
+ alignPanel.seqPanel.seqCanvas.cursorX = viewport.startRes;
+ alignPanel.seqPanel.seqCanvas.cursorY = viewport.startSeq;
+ }
+ alignPanel.seqPanel.seqCanvas.repaint();
+ break;
+
+ case KeyEvent.VK_F1:
+ try
+ {
+ ClassLoader cl = jalview.gui.Desktop.class.getClassLoader();
+ java.net.URL url = javax.help.HelpSet.findHelpSet(cl, "help/help");
+ javax.help.HelpSet hs = new javax.help.HelpSet(cl, url);
+
+ javax.help.HelpBroker hb = hs.createHelpBroker();
+ hb.setCurrentID("home");
+ hb.setDisplayed(true);
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ break
+ ;
+ case KeyEvent.VK_H:
+ {
+ boolean toggleSeqs = !evt.isControlDown();
+ boolean toggleCols = !evt.isShiftDown();
+
+ boolean hide = false;
+
+ SequenceGroup sg = viewport.getSelectionGroup();
+ if (toggleSeqs)
+ {
+ if (sg != null && sg.getSize(false) != viewport.alignment.getHeight())
+ {
+ hideSelSequences_actionPerformed(null);
+ hide = true;
+ }
+ else if (! (toggleCols && viewport.colSel.getSelected().size() > 0))
+ showAllSeqs_actionPerformed(null);
+ }
+
+ if (toggleCols)
+ {
+ if (viewport.colSel.getSelected().size() > 0)
+ {
+ hideSelColumns_actionPerformed(null);
+ if (!toggleSeqs)
+ viewport.selectionGroup = sg;
+ }
+ else if (!hide)
+ showAllColumns_actionPerformed(null);
+ }
+ break;
+ }
+ case KeyEvent.VK_PAGE_UP:
+ if (viewport.wrapAlignment)
+ alignPanel.scrollUp(true);
+ else
+ alignPanel.setScrollValues(viewport.startRes,
+ viewport.startSeq
+ - viewport.endSeq + viewport.startSeq);
+ break;
+ case KeyEvent.VK_PAGE_DOWN:
+ if (viewport.wrapAlignment)
+ alignPanel.scrollUp(false);
+ else
+ alignPanel.setScrollValues(viewport.startRes,
+ viewport.startSeq
+ + viewport.endSeq - viewport.startSeq);
+ break;
+
+
+ }
+ }
+ });
+ }
+
+
+ public void addAlignmentPanel(final AlignmentPanel ap)
+ {
+ alignPanels.addElement(ap);
+
+ int aSize = alignPanels.size();
+
+ tabbedPane.setVisible(aSize>1 || ap.av.viewName!=null);
+
+ if (aSize == 1 && ap.av.viewName==null)
{
- al.setDataset(null);
+ this.getContentPane().add(ap, BorderLayout.CENTER);
+ }
+ else
+ {
+ 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);
+ }
+
+ tabbedPane.addTab(ap.av.viewName==null?"Original":ap.av.viewName, ap);
}
- // AlignViewport ds = new AlignViewport(al.getDataset(), true);
- // AlignmentPanel dap = new AlignmentPanel(this, ds);
- // tabbedPane.add("Dataset", dap);
- // viewports.add(ds);
- // alignPanels.add(dap);
- /////////////////////////
- viewport.addPropertyChangeListener(new PropertyChangeListener()
+ ap.av.addPropertyChangeListener(new PropertyChangeListener()
{
public void propertyChange(PropertyChangeEvent evt)
{
if (evt.getPropertyName().equals("alignment"))
{
+ PaintRefresher.Refresh(ap, ap.av.getSequenceSetId());
alignmentChanged();
}
}
});
-
- if (Desktop.desktop != null)
- {
- addServiceListeners();
- setGUINucleotide(al.isNucleotide());
- }
-
-
- if (jalview.bin.Cache.getDefault("WRAP_ALIGNMENT", false))
- {
- wrapMenuItem.setSelected(true);
- wrapMenuItem_actionPerformed(null);
- }
-
}
- /**
- * Creates a new AlignFrame object.
- *
- * @param al DOCUMENT ME!
- */
- public AlignFrame(AlignmentI al)
- {
- this(al, null);
- }
+
public AlignViewport getViewport()
{
}
}
});
+
addInternalFrameListener(new javax.swing.event.
InternalFrameAdapter()
{
}
+
/**
* DOCUMENT ME!
*
{
try
{
- PaintRefresher.components.remove(viewport.alignment);
+ 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);
+ }
+
this.setClosed(true);
}
catch (Exception ex)
}
}
+
/**
* DOCUMENT ME!
*/
*/
protected void copy_actionPerformed(ActionEvent e)
{
+ System.gc();
if (viewport.getSelectionGroup() == null)
{
return;
seqs,
omitHidden);
+ StringSelection ss = new StringSelection(output);
+
+ try
+ {
+ //Its really worth setting the clipboard contents
+ //to empty before setting the large StringSelection!!
+ Toolkit.getDefaultToolkit().getSystemClipboard()
+ .setContents(new StringSelection(""), null);
- Toolkit.getDefaultToolkit().getSystemClipboard()
- .setContents(new StringSelection(output), Desktop.instance);
+ Toolkit.getDefaultToolkit().getSystemClipboard()
+ .setContents(ss, Desktop.instance);
+ }
+ catch (OutOfMemoryError er)
+ {
+ er.printStackTrace();
+ javax.swing.SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ "Out of memory copying region!!"
+ +
+ "\nSee help files for increasing Java Virtual Machine memory."
+ , "Out of memory",
+ javax.swing.JOptionPane.WARNING_MESSAGE);
+ }
+ });
+
+ return;
+ }
Vector hiddenColumns = null;
if(viewport.hasHiddenColumns)
}
}
+
+
Desktop.jalviewClipboard = new Object[]{ seqs,
viewport.alignment.getDataset(),
hiddenColumns};
+ statusBar.setText("Copied "+seqs.length+" sequences to clipboard.");
}
/**
return;
}
- String str = (String) contents.getTransferData(DataFlavor.stringFlavor);
- if(str.length()<1)
+ String str, format;
+ try
+ {
+ str = (String) contents.getTransferData(DataFlavor.stringFlavor);
+ if (str.length() < 1)
+ return;
+
+ format = new IdentifyFile().Identify(str, "Paste");
+
+ }
+ catch (OutOfMemoryError er)
+ {
+ er.printStackTrace();
+ javax.swing.SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ "Out of memory pasting sequences!!"
+ +
+ "\nSee help files for increasing Java Virtual Machine memory."
+ , "Out of memory",
+ javax.swing.JOptionPane.WARNING_MESSAGE);
+ }
+ });
+
return;
+ }
- String format = new IdentifyFile().Identify(str, "Paste");
SequenceI[] sequences;
if (newAlignment)
{
- alignment = new Alignment(sequences);
-
- if(Desktop.jalviewClipboard!=null)
- alignment.setDataset( (Alignment)Desktop.jalviewClipboard[1] );
- else
- alignment.setDataset( null );
+ alignment = new Alignment(sequences);
+ if (Desktop.jalviewClipboard != null)
+ alignment.setDataset( (Alignment) Desktop.jalviewClipboard[1]);
+ else
+ alignment.setDataset(null);
}
else
{
sequences[i].getEnd());
alignment.addSequence(newseq);
+ PaintRefresher.Refresh(alignPanel,
+ alignPanel.av.getSequenceSetId(),
+ null,newseq);
}
-
-
// Add any annotations attached to sequences
for (int i = 0; i < sequences.length; i++)
{
if(newAlignment)
{
- AlignFrame af = new AlignFrame(alignment);
+ AlignFrame af = new AlignFrame(alignment, DEFAULT_WIDTH, DEFAULT_HEIGHT);
String newtitle = new String("Copied sequences");
if(Desktop.jalviewClipboard!=null && Desktop.jalviewClipboard[2]!=null)
newtitle = newtitle.concat("- from " + title);
}
- Desktop.addInternalFrame(af, newtitle, NEW_WINDOW_WIDTH,
- NEW_WINDOW_HEIGHT);
+ Desktop.addInternalFrame(af, newtitle, DEFAULT_WIDTH,
+ DEFAULT_HEIGHT);
}
SequenceGroup sg = viewport.getSelectionGroup();
-
- //Jalview no longer allows deletion of residues.
- //Check here whether any residues are in selection area
- /* if( sg.getEndRes()-sg.getStartRes() < viewport.alignment.getWidth()-1)
- {
- for (int i = 0; i < sg.sequences.size(); i++)
- {
- SequenceI seq = sg.getSequenceAt(i);
- int j = sg.getStartRes();
- do
- {
- if (!jalview.util.Comparison.isGap(seq.getCharAt(j)))
- {
- JOptionPane.showInternalMessageDialog(
- Desktop.desktop, "Cannot delete residues from alignment!\n"
- + "Try hiding columns instead.",
- "Deletion of residues not permitted",
- JOptionPane.WARNING_MESSAGE);
-
- return;
- }
- j++;
- }while(j<=sg.getEndRes());
- }
- }*/
-
-
addHistoryItem(new HistoryItem("Delete Sequences", viewport.alignment,
HistoryItem.HIDE));
if (seq.getSequence().length() < 1)
{
viewport.getAlignment().deleteSequence(seq);
+ PaintRefresher.Refresh(alignPanel,alignPanel.av.getSequenceSetId(),seq,null);
}
else
{
{
viewport.alignment.deleteAllGroups();
viewport.setSelectionGroup(null);
+ PaintRefresher.Refresh(this, viewport.getSequenceSetId());
alignPanel.repaint();
}
sg.setEndRes(viewport.alignment.getWidth() - 1);
viewport.setSelectionGroup(sg);
- PaintRefresher.Refresh(null, viewport.alignment);
+ alignPanel.repaint();
+ PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId());
}
/**
alignPanel.seqPanel.seqCanvas.highlightSearchResults(null);
alignPanel.idPanel.idCanvas.searchResults = null;
alignPanel.repaint();
- PaintRefresher.Refresh(null, viewport.alignment);
+ PaintRefresher.Refresh(this, viewport.getSequenceSetId());
}
/**
sg.addOrRemove(viewport.getAlignment().getSequenceAt(i), false);
}
- PaintRefresher.Refresh(null, viewport.alignment);
+ PaintRefresher.Refresh(this, viewport.getSequenceSetId());
}
public void invertColSel_actionPerformed(ActionEvent e)
viewport.getColumnSelection().compensateForEdits(shifts);
viewport.setStartRes(seq.findIndex(startRes)-1);
viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());
+
}
/**
SequenceI current;
- int jSize;
Vector seqs = null;
viewport.setStartRes(seq.findIndex(startRes)-1);
viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());
+
}
public void alignmentChanged()
{
- if(viewport.padGaps)
- viewport.getAlignment().padGaps();
+ AlignViewport av;
+ AlignmentPanel ap;
- if(viewport.vconsensus!=null && viewport.autoCalculateConsensus)
+ for(int i=0; i<alignPanels.size(); i++)
{
- viewport.updateConsensus();
- viewport.updateConservation();
- }
+ ap = (AlignmentPanel) alignPanels.elementAt(i);
+ av = ap.av;
- resetAllColourSchemes();
- if(alignPanel.overviewPanel!=null)
- alignPanel.overviewPanel.updateOverviewImage();
+ if (av.padGaps)
+ av.getAlignment().padGaps();
- viewport.alignment.adjustSequenceAnnotations();
+ if (av.vconsensus != null && av.autoCalculateConsensus)
+ {
+ av.updateConsensus();
+ av.updateConservation();
+ }
+
+ resetAllColourSchemes();
+
+ av.alignment.adjustSequenceAnnotations();
- if(alignPanel.overviewPanel!=null)
- alignPanel.overviewPanel.updateOverviewImage();
+ if (ap.overviewPanel != null)
+ ap.overviewPanel.updateOverviewImage();
- alignPanel.repaint();
+ ap.repaint();
+ }
}
void resetAllColourSchemes()
viewport.padGaps = padGapsMenuitem.isSelected();
- // if (viewport.padGaps)
- alignmentChanged();
+ viewport.firePropertyChange("alignment",
+ null,
+ viewport.getAlignment().getSequences());
}
/**
public void hideSelSequences_actionPerformed(ActionEvent e)
{
viewport.hideAllSelectedSeqs();
+ alignPanel.repaint();
}
public void hideSelColumns_actionPerformed(ActionEvent e)
viewport.autoCalculateConsensus = autoCalculate.isSelected();
if(viewport.autoCalculateConsensus)
{
- alignmentChanged();
+ viewport.firePropertyChange("alignment",
+ null,
+ viewport.getAlignment().getSequences());
}
}
}
title = title + " on region";
- tp = new TreePanel(viewport, type, pwType);
+ tp = new TreePanel(alignPanel, type, pwType);
}
else
{
if(viewport.alignment.getHeight()<2)
return;
- tp = new TreePanel(viewport, type, pwType);
+ tp = new TreePanel(alignPanel, type, pwType);
}
addTreeMenuItem(tp, title);
if (nf.getTree() != null)
{
- tp = new TreePanel(viewport,
+ tp = new TreePanel(alignPanel,
"FromFile",
title,
nf);
}
}
- AlignFrame af = new AlignFrame(al);
+ AlignFrame af = new AlignFrame(al, DEFAULT_WIDTH, DEFAULT_HEIGHT);
Desktop.addInternalFrame(af, "Translation of "+this.getTitle(),
- NEW_WINDOW_WIDTH,
- NEW_WINDOW_HEIGHT);
+ DEFAULT_WIDTH,
+ DEFAULT_HEIGHT);
- // AlignViewport newViewport = new AlignViewport(al);
- // AlignmentPanel ap = new AlignmentPanel(this, newViewport);
- // tabbedPane.add("Protein", ap);
- // viewports.add(newViewport);
- // alignPanels.add(ap);
-
- ///Dataset tab
- /////////////////////////
-
- // AlignViewport ds = new AlignViewport(al.getDataset());
- // ds.setDataset(true);
- // AlignmentPanel dap = new AlignmentPanel(this, ds);
- // tabbedPane.add("Dataset", dap);
- // viewports.add(ds);
- // alignPanels.add(dap);
- /////////////////////////
}
-/*public void tabSelected()
- {
- int index = tabbedPane.getSelectedIndex();
- viewport = (AlignViewport)viewports.elementAt(index);
- alignPanel = (AlignmentPanel)alignPanels.elementAt(index);
- }*/
-
/**
* DOCUMENT ME!
*
ex.printStackTrace();
}
}
+
+ public void tabSelectionChanged(int index)
+ {
+ if (index > -1)
+ {
+ alignPanel = (AlignmentPanel) alignPanels.elementAt(index);
+ viewport = alignPanel.av;
+ }
+ }
+
+ public void tabbedPane_mousePressed(MouseEvent e)
+ {
+ if(SwingUtilities.isRightMouseButton(e))
+ {
+ String reply = JOptionPane.showInternalInputDialog(this,
+ "Enter View Name",
+ "Edit View Name",
+ JOptionPane.QUESTION_MESSAGE);
+
+ if (reply != null)
+ {
+ viewport.viewName = reply;
+ tabbedPane.setTitleAt( tabbedPane.getSelectedIndex() ,reply);
+ }
+ }
+ }
+
+
+ public AlignViewport getCurrentView()
+ {
+ return viewport;
+ }
}
boolean padGaps = false;
+ Rectangle explodedPosition;
+
+ String viewName;
+
+ String sequenceSetID;
+
+ boolean gatherViewsHere = false;
+
public AlignViewport(AlignmentI al, boolean dataset)
{
{
showHiddenMarkers = show;
}
+
+ public String getSequenceSetId()
+ {
+ if(sequenceSetID==null)
+ sequenceSetID = alignment.hashCode()+"";
+
+ return sequenceSetID;
+ }
+
}
annotationPanel = new AnnotationPanel(this);\r
alabels = new AnnotationLabels(this);\r
\r
-\r
annotationScroller.setViewportView(annotationPanel);\r
annotationSpaceFillerHolder.add(alabels, BorderLayout.CENTER);\r
\r
fontChanged();\r
\r
scalePanelHolder.add(scalePanel, BorderLayout.CENTER);\r
- seqPanelHolder.add(seqPanel, BorderLayout.CENTER);\r
+ seqPanelHolder.add(seqPanel, BorderLayout.CENTER);\r
\r
setScrollValues(0, 0);\r
\r
- adjustAnnotationHeight();\r
-\r
setAnnotationVisible(av.getShowAnnotation());\r
\r
hscroll.addAdjustmentListener(this);\r
vscroll.addAdjustmentListener(this);\r
\r
- af.addKeyListener(new KeyAdapter()\r
- {\r
- public void keyPressed(KeyEvent evt)\r
- {\r
- if(av.cursorMode\r
- && evt.getKeyCode()>=KeyEvent.VK_0\r
- && evt.getKeyCode()<=KeyEvent.VK_9)\r
- {\r
- seqPanel.numberPressed(evt.getKeyChar());\r
- }\r
-\r
- switch (evt.getKeyCode())\r
- {\r
- case 27: // escape key\r
- alignFrame.deselectAllSequenceMenuItem_actionPerformed(null);\r
-\r
- break;\r
-\r
- case KeyEvent.VK_DOWN:\r
- if(av.cursorMode)\r
- {\r
- seqPanel.moveCursor(0,1);\r
- }\r
- else\r
- alignFrame.moveSelectedSequences(false);\r
- break;\r
-\r
- case KeyEvent.VK_UP:\r
- if (av.cursorMode)\r
- {\r
- seqPanel.moveCursor(0,-1);\r
- }\r
- else\r
- alignFrame.moveSelectedSequences(true);\r
- break;\r
-\r
- case KeyEvent.VK_LEFT:\r
- if(av.cursorMode)\r
- {\r
- seqPanel.moveCursor(-1,0);\r
- }\r
- break;\r
-\r
- case KeyEvent.VK_RIGHT:\r
- if (av.cursorMode)\r
- {\r
- seqPanel.moveCursor(1,0);\r
- }\r
- break;\r
-\r
- case KeyEvent.VK_SPACE:\r
- if(av.cursorMode)\r
- {\r
- seqPanel.insertGapAtCursor(evt.isControlDown()\r
- || evt.isShiftDown()\r
- || evt.isAltDown());\r
- }\r
- break;\r
-\r
- case KeyEvent.VK_DELETE:\r
- case KeyEvent.VK_BACK_SPACE:\r
- if(!av.cursorMode)\r
- {\r
- alignFrame.cut_actionPerformed(null);\r
- }\r
- else\r
- seqPanel.deleteGapAtCursor(evt.isControlDown()\r
- || evt.isShiftDown()\r
- || evt.isAltDown());\r
-\r
- break;\r
-\r
- case KeyEvent.VK_S:\r
- if(av.cursorMode)\r
- {\r
- seqPanel.setCursorRow();\r
- }\r
- break;\r
- case KeyEvent.VK_C:\r
- if(av.cursorMode && !evt.isControlDown())\r
- {\r
- seqPanel.setCursorColumn();\r
- }\r
- break;\r
- case KeyEvent.VK_P:\r
- if(av.cursorMode)\r
- {\r
- seqPanel.setCursorPosition();\r
- }\r
- break;\r
-\r
- case KeyEvent.VK_ENTER:\r
- case KeyEvent.VK_COMMA:\r
- if(av.cursorMode)\r
- {\r
- seqPanel.setCursorRowAndColumn();\r
- }\r
- break;\r
-\r
- case KeyEvent.VK_Q:\r
- if(av.cursorMode)\r
- {\r
- seqPanel.setSelectionAreaAtCursor(true);\r
- }\r
- break;\r
- case KeyEvent.VK_M:\r
- if(av.cursorMode)\r
- {\r
- seqPanel.setSelectionAreaAtCursor(false);\r
- }\r
- break;\r
-\r
- case KeyEvent.VK_F2:\r
- av.cursorMode = ! av.cursorMode;\r
- alignFrame.statusBar.setText("Keyboard editing mode is "+\r
- (av.cursorMode ? "on" : "off"));\r
- if(av.cursorMode)\r
- {\r
- seqPanel.seqCanvas.cursorX = av.startRes;\r
- seqPanel.seqCanvas.cursorY = av.startSeq;\r
- }\r
- seqPanel.seqCanvas.repaint();\r
- break;\r
-\r
- case KeyEvent.VK_F1:\r
- try\r
- {\r
- ClassLoader cl = jalview.gui.Desktop.class.getClassLoader();\r
- java.net.URL url = javax.help.HelpSet.findHelpSet(cl, "help/help");\r
- javax.help.HelpSet hs = new javax.help.HelpSet(cl, url);\r
\r
- javax.help.HelpBroker hb = hs.createHelpBroker();\r
- hb.setCurrentID("home");\r
- hb.setDisplayed(true);\r
- }\r
- catch (Exception ex)\r
- {\r
- ex.printStackTrace();\r
- }\r
- break;\r
- case KeyEvent.VK_H:\r
- {\r
- boolean toggleSeqs = !evt.isControlDown();\r
- boolean toggleCols = !evt.isShiftDown();\r
-\r
- boolean hide = false;\r
-\r
- SequenceGroup sg = av.getSelectionGroup();\r
- if(toggleSeqs)\r
- {\r
- if(sg != null && sg.getSize(false) != av.alignment.getHeight())\r
- {\r
- alignFrame.hideSelSequences_actionPerformed(null);\r
- hide = true;\r
- }\r
- else if (!(toggleCols && av.colSel.getSelected().size() > 0))\r
- alignFrame.showAllSeqs_actionPerformed(null);\r
- }\r
-\r
- if (toggleCols)\r
- {\r
- if(av.colSel.getSelected().size() > 0)\r
- {\r
- alignFrame.hideSelColumns_actionPerformed(null);\r
- if(!toggleSeqs)\r
- av.selectionGroup = sg;\r
- }\r
- else if(!hide)\r
- alignFrame.showAllColumns_actionPerformed(null);\r
- }\r
- break;\r
- }\r
+ adjustAnnotationHeight();\r
\r
- }\r
- }\r
- });\r
}\r
\r
+\r
/**\r
* DOCUMENT ME!\r
*/\r
idPanel.idCanvas.setPreferredSize(d);\r
hscrollFillerPanel.setPreferredSize(d);\r
\r
- if (av.getWrapAlignment())\r
- {\r
- int max = av.alignment.getWidth() /\r
- seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth());\r
- vscroll.setMaximum(max);\r
- vscroll.setUnitIncrement(1);\r
- vscroll.setVisibleAmount(1);\r
- }\r
- else\r
- {\r
- setScrollValues(av.getStartRes(), av.getStartSeq());\r
- }\r
-\r
if (overviewPanel != null)\r
overviewPanel.setBoxPosition();\r
\r
\r
public void adjustAnnotationHeight()\r
{\r
- javax.swing.SwingUtilities.invokeLater(new Runnable()\r
+ if (alignFrame.getHeight() == 0)\r
{\r
- public void run()\r
- {\r
- while(alignFrame.getHeight()==0)\r
- {\r
- Thread.yield();\r
- }\r
+ System.out.println("NEEDS FIXING");\r
+ }\r
\r
- int height = annotationPanel.adjustPanelHeight();\r
+ int height = annotationPanel.adjustPanelHeight();\r
\r
- if (height > alignFrame.getHeight() / 2)\r
- {\r
- height = alignFrame.getHeight() / 2;\r
- }\r
+ if (height > alignFrame.getHeight() / 2)\r
+ {\r
+ height = alignFrame.getHeight() / 2;\r
+ }\r
\r
- annotationScroller.setPreferredSize(\r
- new Dimension(annotationScroller.getWidth(),\r
- height));\r
+ annotationScroller.setPreferredSize(\r
+ new Dimension(annotationScroller.getWidth(),\r
+ height));\r
\r
- annotationSpaceFillerHolder.setPreferredSize(new Dimension(\r
- annotationSpaceFillerHolder.getWidth(),\r
- height));\r
+ annotationSpaceFillerHolder.setPreferredSize(new Dimension(\r
+ annotationSpaceFillerHolder.getWidth(),\r
+ height));\r
\r
- annotationPanel.repaint();\r
- repaint();\r
- }\r
- });\r
+ annotationPanel.repaint();\r
+ repaint();\r
}\r
\r
/**\r
if (av.hasHiddenColumns)\r
maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;\r
\r
- int max = maxwidth /\r
- seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth()) +\r
- 1;\r
-\r
-\r
- vscroll.setMaximum(max);\r
- vscroll.setUnitIncrement(1);\r
- vscroll.setVisibleAmount(1);\r
+ int canvasWidth = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth());\r
+ if(canvasWidth>0)\r
+ {\r
+ int max = maxwidth /\r
+ seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.\r
+ getWidth()) +\r
+ 1;\r
+ vscroll.setMaximum(max);\r
+ vscroll.setUnitIncrement(1);\r
+ vscroll.setVisibleAmount(1);\r
+ }\r
}\r
else\r
{\r
if( this.getVisibleRect().getBounds() == g.getClipBounds()\r
&& overviewPanel != null)\r
overviewPanel.updateOverviewImage();\r
-\r
}\r
\r
/**\r
}\r
else\r
{\r
- AlignFrame af = new AlignFrame(new Alignment(sequences));\r
+ AlignFrame af = new AlignFrame(new Alignment(sequences),\r
+ AlignFrame.DEFAULT_WIDTH,\r
+ AlignFrame.DEFAULT_HEIGHT);\r
af.currentFileFormat = format;\r
Desktop.addInternalFrame(af, "Cut & Paste input - " + format,\r
- AlignFrame.NEW_WINDOW_WIDTH,\r
- AlignFrame.NEW_WINDOW_HEIGHT);\r
+ AlignFrame.DEFAULT_WIDTH,\r
+ AlignFrame.DEFAULT_HEIGHT);\r
af.statusBar.setText("Successfully pasted alignment file");\r
\r
try\r
validate();\r
}\r
\r
+ public static int getViewCount(String viewId)\r
+ {\r
+ int count = 0;\r
+ JInternalFrame[] frames = Desktop.desktop.getAllFrames();\r
+ for (int t = 0; t < frames.length; t++)\r
+ {\r
+ if (frames[t] instanceof AlignFrame)\r
+ {\r
+ AlignFrame af = (AlignFrame) frames[t];\r
+ for(int a=0; a<af.alignPanels.size(); a++)\r
+ {\r
+ if(viewId.equals(\r
+ ((AlignmentPanel)af.alignPanels.elementAt(a)).av.getSequenceSetId() )\r
+ )\r
+ count ++;\r
+ }\r
+ }\r
+ }\r
+\r
+ return count;\r
+ }\r
+\r
+ public void explodeViews(AlignFrame af)\r
+ {\r
+ int size = af.alignPanels.size();\r
+ if(size<2)\r
+ return;\r
+ af.closeMenuItem_actionPerformed(null);\r
+\r
+ for(int i=0; i<size; i++)\r
+ {\r
+ AlignmentPanel ap = (AlignmentPanel)af.alignPanels.elementAt(i);\r
+ AlignFrame newaf = new AlignFrame(ap);\r
+ if(ap.av.explodedPosition!=null)\r
+ newaf.setBounds(ap.av.explodedPosition);\r
+\r
+ ap.av.gatherViewsHere = false;\r
+\r
+ PaintRefresher.Register(ap.seqPanel.seqCanvas, ap.av.getSequenceSetId());\r
+ PaintRefresher.Register(ap.idPanel.idCanvas, ap.av.getSequenceSetId());\r
+ PaintRefresher.Register(ap, ap.av.getSequenceSetId());\r
+\r
+\r
+ newaf.viewport = ap.av;\r
+ addInternalFrame(newaf, af.getTitle(),\r
+ AlignFrame.DEFAULT_WIDTH,\r
+ AlignFrame.DEFAULT_HEIGHT);\r
+ }\r
+\r
+ }\r
+\r
+ public void gatherViews(AlignFrame source)\r
+ {\r
+ source.viewport.gatherViewsHere = true;\r
+ source.viewport.explodedPosition = source.getBounds();\r
+ JInternalFrame[] frames = Desktop.desktop.getAllFrames();\r
+ String viewId = source.viewport.sequenceSetID;\r
+\r
+ for (int t = 0; t < frames.length; t++)\r
+ {\r
+ if (frames[t] instanceof AlignFrame && frames[t] != source)\r
+ {\r
+ AlignFrame af = (AlignFrame) frames[t];\r
+ boolean gatherThis = false;\r
+ for (int a = 0; a < af.alignPanels.size(); a++)\r
+ {\r
+ AlignmentPanel ap = (AlignmentPanel) af.alignPanels.elementAt(a);\r
+ if (viewId.equals(ap.av.getSequenceSetId()))\r
+ {\r
+ gatherThis = true;\r
+ ap.av.gatherViewsHere = false;\r
+ ap.av.explodedPosition = af.getBounds();\r
+ source.addAlignmentPanel(ap);\r
+ }\r
+ }\r
+ if (gatherThis)\r
+ af.closeMenuItem_actionPerformed(null);\r
+ }\r
+ }\r
+\r
+ }\r
+\r
+\r
}\r
\r
{\r
setLayout(new BorderLayout());\r
this.av = av;\r
- PaintRefresher.Register(this, av.alignment);\r
+ PaintRefresher.Register(this, av.getSequenceSetId());\r
}\r
\r
/**\r
*/\r
void selectSeqs(int start, int end)\r
{\r
- if(av.getSelectionGroup()==null)\r
+ if(av.getSelectionGroup()==null)\r
return;\r
\r
+ if (end >= av.getAlignment().getHeight())\r
+ {\r
+ end = av.getAlignment().getHeight() - 1;\r
+ }\r
+\r
lastid = start;\r
\r
if (end < start)\r
}\r
\r
mouseDragging = false;\r
- PaintRefresher.Refresh(av.alignment);\r
+ PaintRefresher.Refresh(this, av.getSequenceSetId());\r
}\r
\r
/**\r
*/
public class Jalview2XML
{
- // SAVES SEVERAL ALIGNEMENT WINDOWS TO SAME JARFILE
+ // SAVES SEVERAL ALIGNMENT WINDOWS TO SAME JARFILE
public void SaveState(File statefile)
{
- long creation = System.currentTimeMillis();
JInternalFrame[] frames = Desktop.desktop.getAllFrames();
if (frames == null)
shortName = shortName + ".xml";
}
- SaveState(af, creation, shortName, jout, out);
+ int ap, apSize= af.alignPanels.size();
+ for (ap = 0; ap < apSize; ap++)
+ {
+ AlignmentPanel apanel = (AlignmentPanel) af.alignPanels.
+ elementAt(ap);
+
+ if (apanel.av.explodedPosition == null)
+ apanel.av.explodedPosition = af.getBounds();
+
+ SaveState(apanel,
+ apSize == 1 ? shortName : ap+shortName,
+ jout, out);
+ }
}
}
{
try
{
- FileOutputStream fos = new FileOutputStream(jarFile);
- JarOutputStream jout = new JarOutputStream(fos);
+ int ap, apSize= af.alignPanels.size();
+ FileOutputStream fos = new FileOutputStream(jarFile);
+ JarOutputStream jout = new JarOutputStream(fos);
+ PrintWriter out = new PrintWriter(new OutputStreamWriter(jout,
+ "UTF-8"));
+ for( ap=0; ap<apSize; ap++)
+ {
+ AlignmentPanel apanel = (AlignmentPanel)af.alignPanels.elementAt(ap);
- //NOTE UTF-8 MUST BE USED FOR WRITING UNICODE CHARS
- ////////////////////////////////////////////////////
- PrintWriter out = new PrintWriter(new OutputStreamWriter(jout,
- "UTF-8"));
+ if (apanel.av.explodedPosition == null)
+ apanel.av.explodedPosition = af.getBounds();
- SaveState(af, System.currentTimeMillis(), fileName, jout, out);
- out.close();
- jout.close();
+ SaveState(apanel,
+ apSize==1?fileName:fileName+ap,
+ jout, out);
+ }
+
+ out.close();
+ jout.close();
}
catch (Exception ex)
{
* @param jout DOCUMENT ME!
* @param out DOCUMENT ME!
*/
- public void SaveState(AlignFrame af, long timeStamp,
- String fileName, JarOutputStream jout, PrintWriter out)
+ public void SaveState(AlignmentPanel ap,
+ String fileName,
+ JarOutputStream jout,
+ PrintWriter out)
{
- Vector seqids = new Vector();
+ if (seqRefIds == null)
+ seqRefIds = new Hashtable();
+
Vector userColours = new Vector();
- AlignViewport av = af.viewport;
+ AlignViewport av = ap.av;
JalviewModel object = new JalviewModel();
object.setVamsasModel(new jalview.schemabinding.version2.VamsasModel());
- object.setCreationDate(new java.util.Date(timeStamp));
+ object.setCreationDate(new java.util.Date(System.currentTimeMillis()));
object.setVersion(jalview.bin.Cache.getProperty("VERSION"));
- jalview.datamodel.AlignmentI jal = af.viewport.alignment;
- jalview.datamodel.AlignmentI jalhidden = null;
+ jalview.datamodel.AlignmentI jal = av.alignment;
if(av.hasHiddenRows)
{
- jalhidden = jal;
jal = jal.getHiddenSequences().getFullAlignment();
}
-
SequenceSet vamsasSet = new SequenceSet();
Sequence vamsasSeq;
JalviewModelSequence jms = new JalviewModelSequence();
int id = 0;
for (int i = 0; i < jal.getHeight(); i++)
{
- seqids.add(jal.getSequenceAt(i));
- vamsasSeq = new Sequence();
- vamsasSeq.setId(id + "");
- vamsasSeq.setName(jal.getSequenceAt(i).getName());
- vamsasSeq.setSequence(jal.getSequenceAt(i).getSequence());
- vamsasSeq.setDescription(jal.getSequenceAt(i).getDescription());
-
- if(jal.getSequenceAt(i).getDatasetSequence().getDBRef()!=null)
+ id = jal.getSequenceAt(i).hashCode();
+
+ if(seqRefIds.get(id+"")!=null)
+ {
+
+ }
+ else
{
- jalview.datamodel.DBRefEntry [] dbrefs =
- jal.getSequenceAt(i).getDatasetSequence().getDBRef();
+ vamsasSeq = new Sequence();
+ vamsasSeq.setId(id + "");
+ vamsasSeq.setName(jal.getSequenceAt(i).getName());
+ vamsasSeq.setSequence(jal.getSequenceAt(i).getSequence());
+ vamsasSeq.setDescription(jal.getSequenceAt(i).getDescription());
- for(int d=0; d<dbrefs.length; d++)
+ if (jal.getSequenceAt(i).getDatasetSequence().getDBRef() != null)
{
- DBRef dbref = new DBRef();
- dbref.setSource( dbrefs[d].getSource() );
- dbref.setVersion( dbrefs[d].getVersion());
- dbref.setAccessionId(dbrefs[d].getAccessionId());
- vamsasSeq.addDBRef(dbref);
+ jalview.datamodel.DBRefEntry[] dbrefs =
+ jal.getSequenceAt(i).getDatasetSequence().getDBRef();
+
+ for (int d = 0; d < dbrefs.length; d++)
+ {
+ DBRef dbref = new DBRef();
+ dbref.setSource(dbrefs[d].getSource());
+ dbref.setVersion(dbrefs[d].getVersion());
+ dbref.setAccessionId(dbrefs[d].getAccessionId());
+ vamsasSeq.addDBRef(dbref);
+ }
}
+
+ vamsasSet.addSequence(vamsasSeq);
+ seqRefIds.put(id+"", vamsasSeq);
}
jseq = new JSeq();
if (av.hasHiddenRows)
{
- jseq.setHidden(jalhidden.getHiddenSequences().isHidden(
+ jseq.setHidden(av.alignment.getHiddenSequences().isHidden(
jal.getSequenceAt(i)));
if(jal.getSequenceAt(i).getHiddenSequences()!=null)
}
jms.addJSeq(jseq);
- vamsasSet.addSequence(vamsasSeq);
- id++;
}
+ if(av.hasHiddenRows)
+ jal = av.alignment;
+
+
//SAVE TREES
///////////////////////////////////
- if (af.viewport.currentTree != null)
+ if (av.currentTree != null)
{
// FIND ANY ASSOCIATED TREES
// NOT IMPLEMENTED FOR HEADLESS STATE AT PRESENT
{
Tree tree = new Tree();
tree.setTitle(tp.getTitle());
- tree.setCurrentTree( (af.viewport.currentTree == tp.getTree()));
+ tree.setCurrentTree( (av.currentTree == tp.getTree()));
tree.setNewick(tp.getTree().toString());
tree.setThreshold(tp.treeCanvas.threshold);
for (int s = 0; s < sg.getSize(false); s++)
{
- jalview.datamodel.Sequence seq = (jalview.datamodel.Sequence) sg.getSequenceAt(s);
- int index = seqids.indexOf(seq);
- groups[i].addSeq(index);
+ jalview.datamodel.Sequence seq =
+ (jalview.datamodel.Sequence) sg.getSequenceAt(s);
+ groups[i].addSeq(seq.hashCode());
}
}
///////////SAVE VIEWPORT
Viewport view = new Viewport();
- view.setTitle(af.getTitle());
- view.setXpos(af.getX());
- view.setYpos(af.getY());
- view.setWidth(af.getWidth());
- view.setHeight(af.getHeight());
+ view.setTitle(ap.alignFrame.getTitle());
+ view.setSequenceSetId(av.getSequenceSetId());
+ view.setViewName(av.viewName);
+ view.setGatheredViews(av.gatherViewsHere);
+
+ view.setXpos(av.explodedPosition.x);
+ view.setYpos(av.explodedPosition.y);
+ view.setWidth(av.explodedPosition.width);
+ view.setHeight(av.explodedPosition.height);
view.setStartRes(av.startRes);
view.setStartSeq(av.startSeq);
= new jalview.schemabinding.version2.FeatureSettings();
String [] renderOrder =
- af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().renderOrder;
+ ap.seqPanel.seqCanvas.getFeatureRenderer().renderOrder;
Vector settingsAdded = new Vector();
for(int ro=0; ro<renderOrder.length; ro++)
Setting setting = new Setting();
setting.setType(renderOrder[ro]);
setting.setColour(
- af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().getColour(renderOrder[ro]).getRGB()
+ ap.seqPanel.seqCanvas.getFeatureRenderer().getColour(renderOrder[ro]).getRGB()
);
setting.setDisplay(
//Make sure we save none displayed feature settings
Enumeration en =
- af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().featureColours.keys();
+ ap.seqPanel.seqCanvas.getFeatureRenderer().featureColours.keys();
while(en.hasMoreElements())
{
String key = en.nextElement().toString();
Setting setting = new Setting();
setting.setType(key);
setting.setColour(
- af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().getColour(key).getRGB()
+ ap.seqPanel.seqCanvas.getFeatureRenderer().getColour(key).getRGB()
);
setting.setDisplay(false);
return ucs;
}
+ Hashtable seqRefIds;
+
/**
* DOCUMENT ME!
*
public AlignFrame LoadJalviewAlign(final String file)
{
jalview.gui.AlignFrame af = null;
+
+ seqRefIds = new Hashtable();
+ Vector gatherToThisFrame= new Vector();
+
try
{
//UNMARSHALLER SEEMS TO CLOSE JARINPUTSTREAM, MOST ANNOYING
object = (JalviewModel) unmar.unmarshal( in );
af = LoadFromObject(object, file);
+ if(af.viewport.gatherViewsHere)
+ {
+ gatherToThisFrame.add(af);
+ }
entryCount++;
}
else if (jarentry != null)
}
catch (Exception ex)
{
-
//Is Version 1 Jar file?
af = new Jalview2XML_V1().LoadJalviewAlign(file);
System.out.println("Successfully loaded archive file");
return af;
}
- ex.printStackTrace();
+
System.err.println("Exception whilst loading jalview XML file : " +
ex + "\n");
javax.swing.SwingUtilities.invokeLater(new Runnable()
}});
}
+ if (Desktop.instance != null)
+ Desktop.instance.stopLoading();
+
+ for (int i = 0; i < gatherToThisFrame.size(); i++)
+ {
+ Desktop.instance.gatherViews(
+ (AlignFrame) gatherToThisFrame.elementAt(i));
+ }
+
return af;
}
String loadPDBFile(String file, String pdbId)
{
- System.out.println("load file "+file);
try
{
JarInputStream jin = null;
AlignFrame LoadFromObject(JalviewModel object, String file)
{
- Vector seqids = new Vector();
SequenceSet vamsasSet = object.getVamsasModel().getSequenceSet(0);
Sequence[] vamsasSeq = vamsasSet.getSequence();
JalviewModelSequence jms = object.getJalviewModelSequence();
+ Viewport[] views = jms.getViewport();
+ Viewport view = views[0]; // DEAL WITH MULTIPLE VIEWPORTS LATER
+
//////////////////////////////////
//LOAD SEQUENCES
+
Vector hiddenSeqs = null;
- jalview.datamodel.Sequence[] jseqs = new jalview.datamodel.Sequence[vamsasSeq.length];
+ jalview.datamodel.Sequence jseq;
+
+ ArrayList tmpseqs = new ArrayList();
+
+
+ boolean multipleView = false;
+
JSeq[] JSEQ = object.getJalviewModelSequence().getJSeq();
- for (int i = 0; i < vamsasSeq.length; i++)
+ for (int i = 0; i < JSEQ.length; i++)
{
- jseqs[i] = new jalview.datamodel.Sequence(vamsasSeq[i].getName(),
- vamsasSeq[i].getSequence());
- jseqs[i].setDescription( vamsasSeq[i].getDescription() );
+ String seqId = JSEQ[i].getId() + "";
+
+ if (seqRefIds.get(seqId) != null)
+ {
+ tmpseqs.add( (jalview.datamodel.Sequence) seqRefIds.get(seqId));
+ multipleView = true;
+ }
+ else
+ {
+ jseq = new jalview.datamodel.Sequence(vamsasSeq[i].getName(),
+ vamsasSeq[i].getSequence());
+ jseq.setDescription(vamsasSeq[i].getDescription());
+ jseq.setStart(JSEQ[i].getStart());
+ jseq.setEnd(JSEQ[i].getEnd());
+ jseq.setColor(new java.awt.Color(JSEQ[i].getColour()));
+ seqRefIds.put(vamsasSeq[i].getId(), jseq);
+ tmpseqs.add( jseq );
+ }
+
+
+ if (JSEQ[i].getHidden())
+ {
+ if (hiddenSeqs == null)
+ hiddenSeqs = new Vector();
+
+
+ hiddenSeqs.addElement(
+ (jalview.datamodel.Sequence) seqRefIds.get(seqId));
+ }
- if(JSEQ[i].getHidden())
- {
- if(hiddenSeqs == null)
- hiddenSeqs = new Vector();
- hiddenSeqs.addElement(jseqs[i]);
- }
- jseqs[i].setStart(JSEQ[i].getStart());
- jseqs[i].setEnd(JSEQ[i].getEnd());
- jseqs[i].setColor(new java.awt.Color(JSEQ[i].getColour()));
- seqids.add(jseqs[i]);
}
///SequenceFeatures are added to the DatasetSequence,
// so we must create the dataset before loading features
/////////////////////////////////
- jalview.datamodel.Alignment al = new jalview.datamodel.Alignment(jseqs);
+
+
+ jalview.datamodel.Sequence[] orderedSeqs = new jalview.datamodel.Sequence[
+ tmpseqs.size()];
+
+ tmpseqs.toArray(orderedSeqs) ;
+
+
+ jalview.datamodel.Alignment al =
+ new jalview.datamodel.Alignment(orderedSeqs);
+
al.setDataset(null);
/////////////////////////////////
Hashtable pdbloaded = new Hashtable();
- for (int i = 0; i < vamsasSeq.length; i++)
+ if(!multipleView)
{
- if (JSEQ[i].getFeaturesCount() > 0)
+ for (int i = 0; i < vamsasSeq.length; i++)
{
- Features[] features = JSEQ[i].getFeatures();
- for (int f = 0; f < features.length; f++)
+ if (JSEQ[i].getFeaturesCount() > 0)
{
- jalview.datamodel.SequenceFeature sf
- = new jalview.datamodel.SequenceFeature(features[f].getType(),
- features[f].getDescription(), features[f].getStatus(),
- features[f].getBegin(), features[f].getEnd(),
- features[f].getFeatureGroup());
-
- sf.setScore(features[f].getScore());
- for(int od=0; od<features[f].getOtherDataCount(); od++)
+ Features[] features = JSEQ[i].getFeatures();
+ for (int f = 0; f < features.length; f++)
{
- OtherData keyValue = features[f].getOtherData(od);
- if(keyValue.getKey().startsWith("LINK"))
- sf.addLink(keyValue.getValue());
- else
- sf.setValue(keyValue.getKey(), keyValue.getValue());
+ jalview.datamodel.SequenceFeature sf
+ = new jalview.datamodel.SequenceFeature(features[f].getType(),
+ features[f].getDescription(), features[f].getStatus(),
+ features[f].getBegin(), features[f].getEnd(),
+ features[f].getFeatureGroup());
+
+ sf.setScore(features[f].getScore());
+ for (int od = 0; od < features[f].getOtherDataCount(); od++)
+ {
+ OtherData keyValue = features[f].getOtherData(od);
+ if (keyValue.getKey().startsWith("LINK"))
+ sf.addLink(keyValue.getValue());
+ else
+ sf.setValue(keyValue.getKey(), keyValue.getValue());
- }
+ }
- al.getSequenceAt(i).getDatasetSequence().addSequenceFeature(sf);
+ al.getSequenceAt(i).getDatasetSequence().addSequenceFeature(sf);
+ }
}
- }
- if (JSEQ[i].getPdbidsCount() > 0)
- {
- Pdbids[] ids = JSEQ[i].getPdbids();
- for (int p = 0; p < ids.length; p++)
+ if (JSEQ[i].getPdbidsCount() > 0)
{
- jalview.datamodel.PDBEntry entry = new jalview.datamodel.PDBEntry();
- entry.setId(ids[p].getId());
- entry.setType(ids[p].getType());
- if (ids[p].getFile() != null)
+ Pdbids[] ids = JSEQ[i].getPdbids();
+ for (int p = 0; p < ids.length; p++)
{
- if (!pdbloaded.containsKey(ids[p].getFile()))
+ jalview.datamodel.PDBEntry entry = new jalview.datamodel.
+ PDBEntry();
+ entry.setId(ids[p].getId());
+ entry.setType(ids[p].getType());
+ if (ids[p].getFile() != null)
{
- String tmppdb = loadPDBFile(file, ids[p].getId());
- entry.setFile(tmppdb);
- pdbloaded.put(ids[p].getId(), tmppdb);
+ if (!pdbloaded.containsKey(ids[p].getFile()))
+ {
+ String tmppdb = loadPDBFile(file, ids[p].getId());
+ entry.setFile(tmppdb);
+ pdbloaded.put(ids[p].getId(), tmppdb);
+ }
+ else
+ entry.setFile(pdbloaded.get(ids[p].getId()).toString());
}
- else
- entry.setFile(pdbloaded.get(ids[p].getId()).toString());
- }
- al.getSequenceAt(i).getDatasetSequence().addPDBId(entry);
+ al.getSequenceAt(i).getDatasetSequence().addPDBId(entry);
+ }
}
- }
- if(vamsasSeq[i].getDBRefCount()>0)
- {
- for(int d=0; d<vamsasSeq[i].getDBRefCount(); d++)
+ if (vamsasSeq[i].getDBRefCount() > 0)
{
- jalview.datamodel.DBRefEntry entry =
- new jalview.datamodel.DBRefEntry(
- vamsasSeq[i].getDBRef(d).getSource(),
- vamsasSeq[i].getDBRef(d).getVersion(),
- vamsasSeq[i].getDBRef(d).getAccessionId()
- );
- al.getSequenceAt(i).getDatasetSequence().addDBRef(entry);
- }
+ for (int d = 0; d < vamsasSeq[i].getDBRefCount(); d++)
+ {
+ jalview.datamodel.DBRefEntry entry =
+ new jalview.datamodel.DBRefEntry(
+ vamsasSeq[i].getDBRef(d).getSource(),
+ vamsasSeq[i].getDBRef(d).getVersion(),
+ vamsasSeq[i].getDBRef(d).getAccessionId()
+ );
+ al.getSequenceAt(i).getDatasetSequence().addDBRef(entry);
+ }
+ }
}
}
-
/////////////////////////////////
//////////////////////////////////
//LOAD ANNOTATIONS
hideConservation = true,
hideConsensus = true;
- if (vamsasSet.getAnnotation() != null)
+ if (vamsasSet.getAnnotationCount()>0)
{
Annotation[] an = vamsasSet.getAnnotation();
}
Vector seqs = new Vector();
- int[] ids = groups[i].getSeq();
- for (int s = 0; s < ids.length; s++)
+ for (int s = 0; s < groups[i].getSeqCount(); s++)
{
- seqs.addElement((jalview.datamodel.SequenceI) seqids.elementAt(
- ids[s]));
+ String seqId = groups[i].getSeq(s)+"";
+ seqs.addElement((jalview.datamodel.SequenceI) seqRefIds.get(seqId));
}
jalview.datamodel.SequenceGroup sg = new jalview.datamodel.SequenceGroup(seqs,
/////////////////////////////////
// LOAD VIEWPORT
- Viewport[] views = jms.getViewport();
- Viewport view = views[0]; // DEAL WITH MULTIPLE VIEWPORTS LATER
+ AlignFrame af = new AlignFrame(al,
+ view.getWidth(),
+ view.getHeight() );
+
+ af.viewport.sequenceSetID = view.getSequenceSetId();
+
+ af.viewport.gatherViewsHere = view.getGatheredViews();
- AlignFrame af = new AlignFrame(al);
+ if (view.getSequenceSetId() != null)
+ PaintRefresher.Register(af.alignPanel, view.getSequenceSetId());
if(hiddenSeqs!=null)
{
}
- if(hideConsensus || hideQuality || hideConservation)
+ if((hideConsensus || hideQuality || hideConservation)
+ && al.getAlignmentAnnotation()!=null)
{
int hSize = al.getAlignmentAnnotation().length;
for (int h = 0; h < hSize; h++)
af.alignPanel.adjustAnnotationHeight();
}
+ af.viewport.viewName = view.getViewName();
af.setBounds(view.getXpos(), view.getYpos(), view.getWidth(),
view.getHeight());
af.viewport.setStartRes(view.getStartRes());
Viewport[] views = jms.getViewport();\r
Viewport view = views[0]; // DEAL WITH MULTIPLE VIEWPORTS LATER\r
\r
- AlignFrame af = new AlignFrame(al);\r
+ AlignFrame af = new AlignFrame(al, view.getWidth(), view.getHeight());\r
\r
\r
// af.changeColour() );\r
if (true)\r
{\r
// make a new frame!\r
- AlignFrame af = new AlignFrame(al, (ColumnSelection) alAndColsel[1]);\r
+ AlignFrame af = new AlignFrame(al, (ColumnSelection) alAndColsel[1],\r
+ AlignFrame.DEFAULT_WIDTH,\r
+ AlignFrame.DEFAULT_HEIGHT\r
+);\r
\r
//>>>This is a fix for the moment, until a better solution is found!!<<<\r
// af.getFeatureRenderer().transferSettings(alignFrame.getFeatureRenderer());\r
// msaorder);\r
\r
Desktop.addInternalFrame(af, "Original Data for " + this.title,\r
- AlignFrame.NEW_WINDOW_WIDTH,\r
- AlignFrame.NEW_WINDOW_HEIGHT);\r
+ AlignFrame.DEFAULT_WIDTH,\r
+ AlignFrame.DEFAULT_HEIGHT);\r
}\r
}\r
/* CutAndPasteTransfer cap = new CutAndPasteTransfer();\r
*/\r
public class PaintRefresher\r
{\r
- static Hashtable components = new Hashtable();\r
+ static Hashtable components;\r
\r
/**\r
* DOCUMENT ME!\r
* @param comp DOCUMENT ME!\r
* @param al DOCUMENT ME!\r
*/\r
- public static void Register(Component comp, AlignmentI al)\r
+ public static void Register(Component comp, String seqSetId)\r
{\r
- if (components.containsKey(al))\r
+ if (components == null)\r
+ components = new Hashtable();\r
+\r
+ if (components.containsKey(seqSetId))\r
{\r
- Vector comps = (Vector) components.get(al);\r
- comps.addElement(comp);\r
+ Vector comps = (Vector) components.get(seqSetId);\r
+ if(!comps.contains(comp))\r
+ comps.addElement(comp);\r
}\r
else\r
{\r
Vector vcoms = new Vector();\r
vcoms.addElement(comp);\r
- components.put(al, vcoms);\r
+ components.put(seqSetId, vcoms);\r
}\r
}\r
\r
- /**\r
- * DOCUMENT ME!\r
- *\r
- * @param al DOCUMENT ME!\r
- */\r
- public static void Refresh(AlignmentI al)\r
+ public static void RemoveComponent(Component comp)\r
{\r
- Refresh(null, al);\r
+ if (components == null)\r
+ return;\r
+\r
+ Enumeration en = components.keys();\r
+ while(en.hasMoreElements())\r
+ {\r
+ String id = en.nextElement().toString();\r
+ Vector comps = (Vector) components.get(id);\r
+ comps.remove(comp);\r
+ if(comps.size()==0)\r
+ {\r
+ components.remove(id);\r
+ }\r
+ }\r
}\r
\r
- /**\r
- * DOCUMENT ME!\r
- *\r
- * @param c DOCUMENT ME!\r
- * @param al DOCUMENT ME!\r
- */\r
- public static void Refresh(Component c, AlignmentI al)\r
+ public static void Refresh(Component source, String id)\r
+ {\r
+ Refresh( source, id, null, null);\r
+ }\r
+\r
+ public static void Refresh(Component source, String id,\r
+ SequenceI removeSeq,\r
+ SequenceI addSeq)\r
{\r
- Component temp;\r
- Vector coms = (Vector) components.get(al);\r
- if(coms==null)\r
- return;\r
+ if (components == null)\r
+ return;\r
+\r
+ Component comp;\r
+ Vector comps = (Vector) components.get(id);\r
+\r
+ if(comps==null)\r
+ {\r
+ return;\r
+ }\r
\r
- Enumeration e = coms.elements();\r
+ Enumeration e = comps.elements();\r
+ while (e.hasMoreElements())\r
+ {\r
+ comp = (Component) e.nextElement();\r
\r
- while (e.hasMoreElements())\r
+ if(comp==source)\r
+ continue;\r
+\r
+ if (!comp.isValid())\r
+ {\r
+ comps.removeElement(comp);\r
+ }\r
+ else if(comp instanceof AlignmentPanel)\r
{\r
- temp = (Component) e.nextElement();\r
-\r
- if (!temp.isValid())\r
- {\r
- coms.removeElement(temp);\r
- }\r
- else if (temp == c)\r
- {\r
- continue;\r
- }\r
- else\r
- temp.repaint();\r
+ AlignmentPanel ap = (AlignmentPanel)comp;\r
+ if(addSeq!=null)\r
+ ap.av.alignment.addSequence(addSeq);\r
+ if(removeSeq!=null)\r
+ ap.av.alignment.deleteSequence(removeSeq);\r
+\r
+ // if(source instanceof AlignmentPanel)\r
+ // ap.av.alignment.setGroups(\r
+ // ((AlignmentPanel)source).av.alignment.getGroups() );\r
+\r
}\r
+ comp.repaint();\r
+ }\r
+\r
}\r
}\r
seq[i] = (Sequence) sequences.elementAt(i);\r
}\r
\r
- AlignFrame af = new AlignFrame(new Alignment(seq));\r
+ AlignFrame af = new AlignFrame(new Alignment(seq),\r
+ AlignFrame.DEFAULT_WIDTH,\r
+ AlignFrame.DEFAULT_HEIGHT);\r
+\r
Desktop.addInternalFrame(af, "Pairwise Aligned Sequences",\r
- AlignFrame.NEW_WINDOW_WIDTH, AlignFrame.NEW_WINDOW_HEIGHT);\r
+ AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);\r
}\r
}\r
if (ap.overviewPanel != null)\r
ap.overviewPanel.updateOverviewImage();\r
\r
- ap.seqPanel.repaint();\r
+ PaintRefresher.Refresh(this, ap.av.getSequenceSetId());\r
}\r
\r
/**\r
}\r
while (end < sg.getEndRes());\r
}\r
- ap.repaint();\r
+ PaintRefresher.Refresh(this, ap.av.getSequenceSetId());\r
}\r
}\r
\r
{\r
SequenceI seq = originalSequences[i];\r
ap.av.alignment.deleteSequence(seq);\r
+ PaintRefresher.Refresh(this,ap.av.getSequenceSetId(),seq,null);\r
del.add(seq);\r
if (sg != null)\r
{\r
ToolTipManager.sharedInstance().registerComponent(this);\r
ToolTipManager.sharedInstance().setInitialDelay(0);\r
ToolTipManager.sharedInstance().setDismissDelay(10000);\r
- PaintRefresher.Register(this, av.alignment);\r
+ PaintRefresher.Register(this, av.getSequenceSetId());\r
\r
prefsize = getPreferredSize();\r
orig = new float[npoint][3];\r
if (av.getSelectionGroup() != null)\r
{\r
av.getSelectionGroup().addOrRemove(found, true);\r
- PaintRefresher.Refresh(this, av.alignment);\r
+ PaintRefresher.Refresh(this, av.getSequenceSetId());\r
}\r
else\r
{\r
fr = new FeatureRenderer(av);\r
sr = new SequenceRenderer(av);\r
setLayout(new BorderLayout());\r
- PaintRefresher.Register(this, av.alignment);\r
+ PaintRefresher.Register(this, av.getSequenceSetId());\r
setBackground(Color.white);\r
}\r
\r
return;\r
}\r
\r
- img = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_RGB);\r
- gg = (Graphics2D) img.getGraphics();\r
- gg.setFont(av.getFont());\r
+ if (img == null || imgWidth != img.getWidth() || imgHeight != img.getHeight())\r
+ {\r
+ try{\r
+ img = new BufferedImage(imgWidth, imgHeight,\r
+ BufferedImage.TYPE_INT_RGB);\r
+ gg = (Graphics2D) img.getGraphics();\r
+ gg.setFont(av.getFont());\r
+ }catch(OutOfMemoryError er)\r
+ {\r
+ System.gc();\r
+ System.out.println(er +" making image, SeqCanvas");\r
+ javax.swing.SwingUtilities.invokeLater(new Runnable()\r
+ {\r
+ public void run()\r
+ {\r
+ javax.swing.JOptionPane.showInternalMessageDialog(Desktop.\r
+ desktop,\r
+ "Out of memory creating alignment image!!"\r
+ +\r
+ "\nSee help files for increasing Java Virtual Machine memory."\r
+ , "Out of memory",\r
+ javax.swing.JOptionPane.WARNING_MESSAGE);\r
+ }\r
+ });\r
+\r
+ return;\r
+ }\r
+ }\r
\r
if (av.antiAlias)\r
gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING,\r
g1.setColor(Color.blue);\r
\r
g1.drawLine( (blockEnd - blockStart + 1) * av.charWidth - 1,\r
- 0+offset,\r
+ 0 + offset,\r
(blockEnd - blockStart + 1) * av.charWidth - 1,\r
(endSeq - startSeq) * av.charHeight + offset);\r
}\r
\r
\r
int cwidth = seqCanvas.getWrappedCanvasWidth(this.getWidth());\r
+ if(cwidth<1)\r
+ return 0;\r
\r
wrappedBlock = y / cHeight;\r
wrappedBlock += av.getStartRes() / cwidth;\r
changeEndRes = false;\r
changeStartRes = false;\r
stretchGroup = null;\r
- PaintRefresher.Refresh(av.alignment);\r
+\r
+ PaintRefresher.Refresh(this, av.getSequenceSetId());\r
}\r
\r
/**\r
{\r
if (alignFrame == null)\r
{\r
- AlignFrame af = new AlignFrame(new Alignment(sequences));\r
+ AlignFrame af = new AlignFrame(new Alignment(sequences),\r
+ AlignFrame.DEFAULT_WIDTH,\r
+ AlignFrame.DEFAULT_HEIGHT\r
+);\r
af.currentFileFormat = format;\r
if(title==null)\r
title = "Retrieved from " + database.getSelectedItem();\r
Desktop.addInternalFrame(af,\r
title,\r
- AlignFrame.NEW_WINDOW_WIDTH,\r
- AlignFrame.NEW_WINDOW_HEIGHT);\r
+ AlignFrame.DEFAULT_WIDTH,\r
+ AlignFrame.DEFAULT_HEIGHT);\r
af.statusBar.setText("Successfully pasted alignment file");\r
\r
try\r
NJTree tree;\r
JScrollPane scrollPane;\r
AlignViewport av;\r
+ AlignmentPanel ap;\r
Font font;\r
FontMetrics fm;\r
boolean fitToWindow = true;\r
* @param scroller DOCUMENT ME!\r
* @param label DOCUMENT ME!\r
*/\r
- public TreeCanvas(AlignViewport av, JScrollPane scroller)\r
+ public TreeCanvas(AlignmentPanel ap, JScrollPane scroller)\r
{\r
- this.av = av;\r
+ this.av = ap.av;\r
+ this.ap = ap;\r
font = av.getFont();\r
scrollPane = scroller;\r
addMouseListener(this);\r
addMouseMotionListener(this);\r
- PaintRefresher.Register(this, av.alignment);\r
+ PaintRefresher.Register(this, ap.av.getSequenceSetId());\r
}\r
\r
\r
}\r
}\r
\r
- PaintRefresher.Refresh(this, av.alignment);\r
+ PaintRefresher.Refresh(this, av.getSequenceSetId());\r
repaint();\r
}\r
}\r
if (ob instanceof SequenceI)\r
{\r
treeSelectionChanged( (Sequence) ob);\r
- PaintRefresher.Refresh(this, av.alignment);\r
+ PaintRefresher.Refresh(this, ap.av.getSequenceSetId());\r
repaint();\r
return;\r
}\r
colourGroups();\r
}\r
\r
- PaintRefresher.Refresh(this, av.alignment);\r
+ PaintRefresher.Refresh(this, ap.av.getSequenceSetId());\r
repaint();\r
}\r
\r
* @param s DOCUMENT ME!\r
* @param e DOCUMENT ME!\r
*/\r
- public TreePanel(AlignViewport av, String type, String pwtype)\r
+ public TreePanel(AlignmentPanel ap, String type, String pwtype)\r
{\r
super();\r
- initTreePanel(av, type, pwtype, null);\r
+ initTreePanel(ap, type, pwtype, null);\r
\r
// We know this tree has distances. JBPNote TODO: prolly should add this as a userdefined default\r
// showDistances(true);\r
* @param type DOCUMENT ME!\r
* @param pwtype DOCUMENT ME!\r
*/\r
- public TreePanel(AlignViewport av,\r
+ public TreePanel(AlignmentPanel ap,\r
String type,\r
String pwtype,\r
NewickFile newtree)\r
{\r
super();\r
- initTreePanel(av, type, pwtype, newtree);\r
+ initTreePanel(ap, type, pwtype, newtree);\r
}\r
\r
public AlignmentI getAlignment()\r
}\r
\r
\r
- void initTreePanel(AlignViewport av, String type, String pwtype,\r
+ void initTreePanel(AlignmentPanel ap, String type, String pwtype,\r
NewickFile newTree)\r
{\r
\r
+ av = ap.av;\r
this.type = type;\r
this.pwtype = pwtype;\r
\r
- treeCanvas = new TreeCanvas(av, scrollPane);\r
+ treeCanvas = new TreeCanvas(ap, scrollPane);\r
scrollPane.setViewportView(treeCanvas);\r
\r
av.addPropertyChangeListener(new java.beans.PropertyChangeListener()\r
if (true)\r
{\r
// make a new frame!\r
- AlignFrame af = new AlignFrame(al, (ColumnSelection) alAndColsel[1]);\r
+ AlignFrame af = new AlignFrame(al, (ColumnSelection) alAndColsel[1],\r
+ AlignFrame.DEFAULT_WIDTH,\r
+ AlignFrame.DEFAULT_HEIGHT\r
+);\r
\r
//>>>This is a fix for the moment, until a better solution is found!!<<<\r
// af.getFeatureRenderer().transferSettings(alignFrame.getFeatureRenderer());\r
// msaorder);\r
\r
Desktop.addInternalFrame(af, "Original Data for " + this.title,\r
- AlignFrame.NEW_WINDOW_WIDTH,\r
- AlignFrame.NEW_WINDOW_HEIGHT);\r
+ AlignFrame.DEFAULT_WIDTH,\r
+ AlignFrame.DEFAULT_HEIGHT);\r
}\r
}\r
}\r