X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignFrame.java;h=6d70bf76256550ec1b903cb743be4d3c11c98280;hb=449001e7a8c9aad77117daa36567f3e8313646ea;hp=ee84bd38a2b9f463f7569f3349ceff5aa769980f;hpb=de468b0bf50850a89c6a8a7acfa4ff5b689ffed1;p=jalview.git diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index ee84bd3..6d70bf7 100755 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -153,6 +153,7 @@ public class AlignFrame extends Frame implements ActionListener, SequenceFeature sf; FeatureRenderer fr = alignPanel.seqPanel.seqCanvas.getFeatureRenderer(); int lineNo = 0; + String featureGroup = null; while ( (line = in.readLine()) != null) { lineNo++; @@ -160,8 +161,22 @@ public class AlignFrame extends Frame implements ActionListener, if (st.countTokens() == 2) { type = st.nextToken(); - UserColourScheme ucs = new UserColourScheme(st.nextToken()); - fr.setColour(type, ucs.findColour("A")); + if(type.equalsIgnoreCase("startgroup")) + { + featureGroup = st.nextToken(); + } + else if(type.equalsIgnoreCase("endgroup")) + { + //We should check whether this is the current group, + //but at present theres no way of showing more than 1 group + st.nextToken(); + featureGroup = null; + } + else + { + UserColourScheme ucs = new UserColourScheme(st.nextToken()); + fr.setColour(type, ucs.findColour("A")); + } continue; } @@ -184,8 +199,6 @@ public class AlignFrame extends Frame implements ActionListener, end = Integer.parseInt(st.nextToken()); seq = viewport.alignment.getSequenceAt(index); - start = seq.findIndex(start) - 1; - end = seq.findIndex(end) - 1; type = st.nextToken(); @@ -197,18 +210,24 @@ public class AlignFrame extends Frame implements ActionListener, } sf = new SequenceFeature(type, desc, "", start, end); + sf.setFeatureGroup(featureGroup); seq.addSequenceFeature(sf); } } viewport.showSequenceFeatures = true; + viewMenu.addSeparator(); + viewMenu.add(sequenceFeatures); + viewMenu.add(featureSettings); + alignPanel.repaint(); } catch (Exception ex) { + ex.printStackTrace(); System.out.println("Error parsing groups file: " + ex); } } @@ -289,6 +308,10 @@ public void itemStateChanged(ItemEvent evt) renderGapsMenuItem_actionPerformed(); else if(evt.getSource()==annotationPanelMenuItem) annotationPanelMenuItem_actionPerformed(); + else if(evt.getSource()==sequenceFeatures) + { viewport.showSequenceFeatures(sequenceFeatures.getState()); + alignPanel.seqPanel.seqCanvas.repaint(); + } else if(evt.getSource()==conservationMenuItem) conservationMenuItem_actionPerformed(); else if(evt.getSource()==abovePIDThreshold) @@ -346,6 +369,8 @@ public void itemStateChanged(ItemEvent evt) findMenuItem_actionPerformed(); else if(evt.getSource()==font) font_actionPerformed(); + else if(evt.getSource()==featureSettings) + featureSettings_actionPerformed(); else if(evt.getSource()==overviewMenuItem) overviewMenuItem_actionPerformed(); else if(evt.getSource()==noColourmenuItem) @@ -817,6 +842,7 @@ public void itemStateChanged(ItemEvent evt) viewport.setSelectionGroup(null); viewport.getColumnSelection().clear(); viewport.setSelectionGroup(null); + alignPanel.idPanel.idCanvas.searchResults = null; alignPanel.seqPanel.seqCanvas.highlightSearchResults(null); alignPanel.repaint(); PaintRefresher.Refresh(null, viewport.alignment); @@ -992,6 +1018,8 @@ public void itemStateChanged(ItemEvent evt) resetAllColourSchemes(); if(alignPanel.overviewPanel!=null) alignPanel.overviewPanel.updateOverviewImage(); + + viewport.alignment.adjustSequenceAnnotations(); alignPanel.repaint(); } @@ -1113,6 +1141,11 @@ public void itemStateChanged(ItemEvent evt) alignPanel.setAnnotationVisible(annotationPanelMenuItem.getState()); } + public void featureSettings_actionPerformed() + { + new FeatureSettings(viewport, alignPanel); + } + public void overviewMenuItem_actionPerformed() { if (alignPanel.overviewPanel != null) @@ -1872,6 +1905,7 @@ public void itemStateChanged(ItemEvent evt) font.addActionListener(this); scaleAbove.setLabel("Scale Above"); scaleAbove.setState(true); + scaleAbove.setEnabled(false); scaleAbove.addItemListener(this); scaleLeft.setEnabled(false); scaleLeft.setState(true); @@ -1900,6 +1934,11 @@ public void itemStateChanged(ItemEvent evt) seqLimits.setState(true); seqLimits.setLabel("Show Sequence Limits"); seqLimits.addItemListener(this); + featureSettings.setLabel("Feature Settings..."); + featureSettings.addActionListener(this); + sequenceFeatures.setLabel("Sequence Features"); + sequenceFeatures.addItemListener(this); + sequenceFeatures.setState(true); alignFrameMenuBar.add(fileMenu); alignFrameMenuBar.add(editMenu); @@ -1932,7 +1971,7 @@ public void itemStateChanged(ItemEvent evt) searchMenu.add(findMenuItem); viewMenu.add(font); viewMenu.addSeparator(); - viewMenu.add(seqLimits); + viewMenu.add(seqLimits); viewMenu.addSeparator(); viewMenu.add(wrapMenuItem); viewMenu.add(scaleAbove); @@ -1944,7 +1983,7 @@ public void itemStateChanged(ItemEvent evt) viewMenu.add(colourTextMenuItem); viewMenu.add(renderGapsMenuItem); viewMenu.add(annotationPanelMenuItem); - viewMenu.addSeparator(); + viewMenu.addSeparator(); viewMenu.add(overviewMenuItem); colourMenu.add(applyToAllGroups); colourMenu.addSeparator(); @@ -2001,24 +2040,17 @@ public void itemStateChanged(ItemEvent evt) embeddedMenu.setBackground(Color.lightGray); embeddedMenu.setLayout(flowLayout1); embeddedEdit.setText("Edit"); - embeddedEdit.setAlignment(Label.CENTER); embeddedEdit.setFont(new java.awt.Font("Arial", Font.PLAIN, 10)); embeddedSearch.setText("Search"); - embeddedSearch.setAlignment(Label.CENTER); embeddedSearch.setFont(new java.awt.Font("Arial", Font.PLAIN, 10)); embeddedView.setText("View"); - embeddedView.setAlignment(Label.CENTER); embeddedView.setFont(new java.awt.Font("Arial", Font.PLAIN, 10)); embeddedColour.setText("Colour"); - embeddedColour.setAlignment(Label.CENTER); embeddedColour.setFont(new java.awt.Font("Arial", Font.PLAIN, 10)); - embeddedFile.setAlignment(Label.CENTER); embeddedFile.setFont(new java.awt.Font("Arial", Font.PLAIN, 10)); embeddedFile.setText("File"); - embeddedHelp.setAlignment(Label.CENTER); embeddedHelp.setFont(new java.awt.Font("Arial", Font.PLAIN, 10)); embeddedHelp.setText("Help"); - embeddedCalculate.setAlignment(Label.CENTER); embeddedCalculate.setFont(new java.awt.Font("Arial", Font.PLAIN, 10)); embeddedCalculate.setText("Calculate"); embeddedMenu.add(embeddedFile); @@ -2029,7 +2061,7 @@ public void itemStateChanged(ItemEvent evt) embeddedMenu.add(embeddedCalculate); embeddedMenu.add(embeddedHelp); flowLayout1.setAlignment(FlowLayout.LEFT); - flowLayout1.setHgap(0); + flowLayout1.setHgap(2); flowLayout1.setVgap(0); embeddedFile.addMouseListener(this); embeddedEdit.addMouseListener(this); @@ -2060,6 +2092,8 @@ public void itemStateChanged(ItemEvent evt) PopupMenu filePopup, editPopup, searchPopup, viewPopup, colourPopup, calculatePopup, helpPopup; + MenuItem featureSettings = new MenuItem(); + CheckboxMenuItem sequenceFeatures = new CheckboxMenuItem(); public void mousePressed(MouseEvent evt) {