X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fappletgui%2FAlignFrame.java;h=692c2fde137e81d89d6e25a2cbda80a00d0d7e4f;hb=a0d1b1826f8ab0792c589946746d52ad0316fc99;hp=ccf2bd21eeb011fa8703ddf77f37f3b7c9e83fce;hpb=d72c37ab022b3a8ff6f6cda1d3f09de5c5d004ab;p=jalview.git diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index ccf2bd2..692c2fd 100755 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -29,18 +29,19 @@ import java.awt.event.*; import java.util.*; import java.io.InputStreamReader; import java.io.BufferedReader; +import java.net.URL; public class AlignFrame extends GAlignFrame { final AlignmentPanel alignPanel; - final AlignViewport viewport; - public static final int NEW_WINDOW_WIDTH = 700; - public static final int NEW_WINDOW_HEIGHT = 500; + public final AlignViewport viewport; + int NEW_WINDOW_WIDTH = 700; + int NEW_WINDOW_HEIGHT = 500; jalview.bin.JalviewLite applet; - public AlignFrame(AlignmentI al, jalview.bin.JalviewLite applet) + public AlignFrame(AlignmentI al, jalview.bin.JalviewLite applet, String title) { this.applet = applet; viewport = new AlignViewport(al, applet); @@ -48,38 +49,69 @@ public class AlignFrame add(alignPanel); alignPanel.validate(); - String treeFile = applet.getParameter("treeFile"); - if (treeFile != null) + if(applet!=null) { - try + String treeFile = applet.getParameter("treeFile"); + if (treeFile != null) { - treeFile = treeFile; - jalview.io.NewickFile fin = new jalview.io.NewickFile(applet. - getCodeBase() + treeFile, "URL"); - fin.parse(); + try + { + jalview.io.NewickFile fin = new jalview.io.NewickFile(applet. + getCodeBase() + treeFile, "URL"); + fin.parse(); - if (fin.getTree() != null) + if (fin.getTree() != null) + { + TreePanel tp = null; + tp = new TreePanel(viewport, viewport.getAlignment().getSequences(), + fin, "FromFile", applet.getCodeBase() + treeFile); + jalview.bin.JalviewLite.addFrame(tp, treeFile, 600, 500); + addTreeMenuItem(tp, treeFile); + } + } + catch (Exception ex) { - TreePanel tp = null; - tp = new TreePanel(viewport, viewport.getAlignment().getSequences(), - fin, "FromFile", applet.getCodeBase() + treeFile); - jalview.bin.JalviewLite.addFrame(tp, treeFile, 600, 500); - addTreeMenuItem(tp, treeFile); + ex.printStackTrace(); } } - catch (Exception ex) + + String param = applet.getParameter("sortBy"); + if (param != null) { - ex.printStackTrace(); + if (param.equalsIgnoreCase("Id")) + sortIDMenuItem_actionPerformed(null); + else if (param.equalsIgnoreCase("Pairwise Identity")) + sortPairwiseMenuItem_actionPerformed(null); } - } - String param = applet.getParameter("sortBy"); - if(param!=null) - { - if (param.equalsIgnoreCase("Id")) - sortIDMenuItem_actionPerformed(null); - else if (param.equalsIgnoreCase("Pairwise Identity")) - sortPairwiseMenuItem_actionPerformed(null); + param = applet.getParameter("wrap"); + if (param != null) + { + if (param.equalsIgnoreCase("true")) + { + wrapMenuItem.setState(true); + wrapMenuItem_actionPerformed(null); + } + } + + try + { + param = applet.getParameter("windowWidth"); + if (param != null) + { + int width = Integer.parseInt(param); + NEW_WINDOW_WIDTH = width; + } + param = applet.getParameter("windowHeight"); + if (param != null) + { + int height = Integer.parseInt(param); + NEW_WINDOW_HEIGHT = height; + } + } + catch (Exception ex) + {} + } this.addWindowListener(new WindowAdapter() @@ -100,8 +132,98 @@ public class AlignFrame } } }); + + jalview.bin.JalviewLite.addFrame(this, title, + NEW_WINDOW_WIDTH, + NEW_WINDOW_HEIGHT); + + } + + /** + * DOCUMENT ME! + * + * @param String DOCUMENT ME! + */ + + public void parseFeaturesFile(String file) + { + try + { + URL url = new URL(file); + + BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); + SequenceI seq = null; + String line, type, desc, token; + + int index, start, end; + StringTokenizer st; + SequenceFeature sf; + FeatureRenderer fr = alignPanel.seqPanel.seqCanvas.getFeatureRenderer(); + int lineNo = 0; + while ( (line = in.readLine()) != null) + { + lineNo++; + st = new StringTokenizer(line, "\t"); + if (st.countTokens() == 2) + { + type = st.nextToken(); + UserColourScheme ucs = new UserColourScheme(st.nextToken()); + fr.setColour(type, ucs.findColour("A")); + continue; + } + + while (st.hasMoreElements()) + { + desc = st.nextToken(); + token = st.nextToken(); + if (!token.equals("ID_NOT_SPECIFIED")) + { + index = viewport.alignment.findIndex(viewport.alignment.findName( + token)); + st.nextToken(); + } + else + { + index = Integer.parseInt(st.nextToken()); + } + + start = Integer.parseInt(st.nextToken()); + end = Integer.parseInt(st.nextToken()); + + seq = viewport.alignment.getSequenceAt(index); + start = seq.findIndex(start) - 1; + end = seq.findIndex(end) - 1; + + type = st.nextToken(); + + if(fr.getColour(type)==null) + { + // Probably the old style groups file + UserColourScheme ucs = new UserColourScheme(type); + fr.setColour(type, ucs.findColour("A")); + } + + sf = new SequenceFeature(type, desc, "", start, end); + + seq.addSequenceFeature(sf); + } + } + + viewport.showSequenceFeatures = true; + ((Alignment)viewport.alignment).featuresAdded = true; + + alignPanel.repaint(); + + } + catch (Exception ex) + { + System.out.println("Error parsing groups file: " + ex); + } + } + + public void inputText_actionPerformed(ActionEvent e) { CutAndPasteTransfer cap = new CutAndPasteTransfer(true, applet); @@ -118,15 +240,17 @@ public class AlignFrame jalview.bin.JalviewLite.addFrame(frame, "Alignment output - " + e.getActionCommand(), 600, 500); - cap.setText(FormatAdapter.formatSequences(e.getActionCommand(), - viewport.getAlignment(). - getSequences())); + cap.setText(new AppletFormatAdapter().formatSequences(e.getActionCommand(), + viewport.getAlignment().getSequences(), + viewport.showDBPrefix, + viewport.showJVSuffix)); } public void closeMenuItem_actionPerformed(ActionEvent e) { PaintRefresher.components.remove(viewport.alignment); - dispose(); + if(PaintRefresher.components.size()==0 && applet==null) + System.exit(0); } Stack historyList = new Stack(); @@ -397,7 +521,6 @@ public class AlignFrame newSeqs[i] = (SequenceI) seqs.elementAt(i); } - AlignFrame af = new AlignFrame(new Alignment(newSeqs), applet); String newtitle = new String("Copied sequences"); if (getTitle().startsWith("Copied sequences")) { @@ -407,6 +530,8 @@ public class AlignFrame { newtitle = newtitle.concat("- from " + getTitle()); } + AlignFrame af = new AlignFrame(new Alignment(newSeqs), applet, newtitle); + jalview.bin.JalviewLite.addFrame(af, newtitle, NEW_WINDOW_WIDTH, NEW_WINDOW_HEIGHT); } @@ -623,30 +748,56 @@ public class AlignFrame { seqs = viewport.getSelectionGroup().sequences; start = viewport.getSelectionGroup().getStartRes(); - end = viewport.getSelectionGroup().getEndRes(); + end = viewport.getSelectionGroup().getEndRes()+1; } else seqs = viewport.alignment.getSequences(); - for (int i = 0; i -1) + { + current.deleteChars(rangeStart, rangeEnd); + j-=rangeEnd-rangeStart; + jSize-=rangeEnd-rangeStart; + rangeStart = -1; + rangeEnd = -1; + } + else + j++; + } + } + while (j < end && j < jSize); + if(rangeStart>-1) + { + current.deleteChars(rangeStart, rangeEnd); } - while(j < end && j < jSize) ; } - viewport.setStartRes(seq.findIndex(startRes)-1); viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); } @@ -704,25 +855,29 @@ public class AlignFrame public void findMenuItem_actionPerformed(ActionEvent e) { - Finder finder = new Finder(alignPanel); + new Finder(alignPanel); } public void font_actionPerformed(ActionEvent e) { - Frame frame = new Frame(); - FontChooser fc = new FontChooser(alignPanel, frame); - frame.add(fc); - jalview.bin.JalviewLite.addFrame(frame, "Change Font", 440, 100); + new FontChooser(alignPanel); + } + public void dbref_actionPerformed(ItemEvent e) + { + viewport.showDBPrefix = dbref.getState(); + alignPanel.fontChanged(); + alignPanel.repaint(); } - protected void fullSeqId_actionPerformed(ActionEvent e) + public void seqLimits_itemStateChanged(ItemEvent e) { - viewport.setShowFullId(fullSeqId.getState()); + viewport.setShowJVSuffix(seqLimits.getState()); alignPanel.fontChanged(); alignPanel.repaint(); } + protected void colourTextMenuItem_actionPerformed(ActionEvent e) { viewport.setColourText(colourTextMenuItem.getState()); @@ -777,11 +932,6 @@ public class AlignFrame public void annotationPanelMenuItem_actionPerformed(ActionEvent e) { - if (annotationPanelMenuItem.getState() && viewport.getWrapAlignment()) - { - annotationPanelMenuItem.setState(false); - return; - } viewport.setShowAnnotation(annotationPanelMenuItem.getState()); alignPanel.setAnnotationVisible(annotationPanelMenuItem.getState()); } @@ -1033,7 +1183,7 @@ public class AlignFrame public void userDefinedColour_actionPerformed(ActionEvent e) { - UserDefinedColours chooser = new UserDefinedColours(alignPanel, null); + new UserDefinedColours(alignPanel, null); } public void PIDColour_actionPerformed(ActionEvent e) @@ -1059,7 +1209,7 @@ public class AlignFrame { addHistoryItem(new HistoryItem("ID Sort", viewport.alignment, HistoryItem.SORT)); - AlignmentSorter.sortByID(viewport.getAlignment()); + AlignmentSorter.sortByID(viewport.getAlignment(), viewport.showDBPrefix); alignPanel.repaint(); } @@ -1094,6 +1244,24 @@ public class AlignFrame public void PCAMenuItem_actionPerformed(ActionEvent e) { + //are the sequences aligned? + if (!viewport.alignment.isAligned()) + { + SequenceI current; + int Width = viewport.getAlignment().getWidth(); + + for (int i = 0; i < viewport.getAlignment().getSequences().size(); + i++) + { + current = viewport.getAlignment().getSequenceAt(i); + + if (current.getLength() < Width) + { + current.insertCharAt(Width - 1, viewport.getGapCharacter()); + } + } + alignPanel.repaint(); + } if ( (viewport.getSelectionGroup() != null && viewport.getSelectionGroup().getSize() < 4 && @@ -1105,11 +1273,7 @@ public class AlignFrame try { - PCAPanel pcaPanel = new PCAPanel(viewport, null); - Frame frame = new Frame(); - frame.add(pcaPanel); - jalview.bin.JalviewLite.addFrame(frame, "Principal component analysis", - 400, 400); + new PCAPanel(viewport); } catch (java.lang.OutOfMemoryError ex) { @@ -1204,7 +1368,7 @@ public class AlignFrame protected void documentation_actionPerformed(ActionEvent e) { - jalview.bin.JalviewLite.showURL("http://www.jalview.org/help.html"); + showURL("http://www.jalview.org/help.html"); } protected void about_actionPerformed(ActionEvent e) @@ -1271,4 +1435,36 @@ public class AlignFrame jalview.bin.JalviewLite.addFrame(frame, "Jalview", 580, 200); } + + /** + * Displays the given URL in a new browser window + * + * @param url URL to display in browser window. + *
New window will be named "HELP_WINDOW" + */ + public void showURL(String url) + { + showURL(url, "HELP"); + } + + public void showURL(String url, String target) + { + if (applet == null) + { + System.out.println("Not running as applet - no browser available."); + } + else + { + try + { + applet.getAppletContext().showDocument(new java.net.URL(url), + target); + } + catch (Exception ex) + { + ex.printStackTrace(); + } + } + } + }