From: amwaterhouse Date: Thu, 13 Jul 2006 17:01:38 +0000 (+0000) Subject: DAS feature retrieval updated X-Git-Tag: Release_2_1~285 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=e2d27f21c1655d5707adad16fe174f2c88ba7cd3;p=jalview.git DAS feature retrieval updated --- diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index e59ee59..c1f088b 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -203,6 +203,8 @@ public class AlignFrame { alignPanel.seqPanel.seqCanvas.fr.featuresAdded(); alignPanel.repaint(); + if(featureSettings!=null) + featureSettings.setTableData(); } } @@ -1459,31 +1461,15 @@ public class AlignFrame } - public void dbRefs_actionPerformed(ActionEvent e) - { - new DBRefFetcher(viewport.alignment, this); - } - - public void defaultDASSource_actionPerformed(ActionEvent e) - { - new DasSequenceFeatureFetcher(viewport.alignment, this); - viewport.setShowSequenceFeatures(true); - showSeqFeatures.setSelected(true); - } - - public void modifyDASSource_actionPerformed(ActionEvent e) - { - DasSourceBrowser dsb = new DasSourceBrowser(); - JInternalFrame frame = new JInternalFrame(); - frame.setContentPane(dsb); - Desktop.addInternalFrame(frame, "Modify DAS Source", - 600,370); - } - - + FeatureSettings featureSettings; public void featureSettings_actionPerformed(ActionEvent e) { - new FeatureSettings(viewport, alignPanel); + if(featureSettings !=null ) + { + featureSettings.close(); + featureSettings = null; + } + featureSettings = new FeatureSettings(this); } /** diff --git a/src/jalview/gui/AnnotationPanel.java b/src/jalview/gui/AnnotationPanel.java index b0027a8..30d9068 100755 --- a/src/jalview/gui/AnnotationPanel.java +++ b/src/jalview/gui/AnnotationPanel.java @@ -1027,8 +1027,7 @@ public class AnnotationPanel extends JPanel implements MouseListener, if(sRes==0) { - sRes++; - x+=av.charWidth; + x++; } int y1=y, y2=y; diff --git a/src/jalview/gui/DasSourceBrowser.java b/src/jalview/gui/DasSourceBrowser.java index afacb41..bacb383 100755 --- a/src/jalview/gui/DasSourceBrowser.java +++ b/src/jalview/gui/DasSourceBrowser.java @@ -240,6 +240,7 @@ public class DasSourceBrowser extends GDasSourceBrowser public void run() { + System.out.println("das source browser running"); addLocal.setVisible(false); refresh.setVisible(false); progressBar.setVisible(true); @@ -252,6 +253,25 @@ public class DasSourceBrowser extends GDasSourceBrowser init(); } + public Vector getSelectedSources() + { + Vector selected = new Vector(); + for (int r = 0; r < selectedSources.size(); r++) + { + for (int i = 0; i < dasSources.length; i++) + { + if (dasSources[i].getNickname().equals( + selectedSources.elementAt(r))) + { + selected.addElement(dasSources[i]); + break; + } + } + } + + return selected; + } + public DasSource[] getDASSource() { if(dasSources==null) @@ -552,12 +572,19 @@ public class DasSourceBrowser extends GDasSourceBrowser ArrayList selected = new ArrayList(); DasSource ds; + //The features filter is not visible, but we must still + //filter the das source list here. + //July 2006 - only 6 sources fo not serve features + Object [] dummyFeatureList = new Object[]{"features"}; + // capabilities.get for (int i = 0; i < dSize; i++) { ds = dasSources[i]; - if (!selectedInList(filter3, ds.getLabels())) + if (!selectedInList(dummyFeatureList, ds.getCapabilities()) + || !selectedInList(filter3.getSelectedValues(), + ds.getLabels())) { continue; } @@ -565,9 +592,13 @@ public class DasSourceBrowser extends GDasSourceBrowser DasCoordinateSystem[] dcs = ds.getCoordinateSystem(); for (int j = 0; j < dcs.length; j++) { - if (selectedInList(filter1, new String[] + if (selectedInList(dummyFeatureList,ds.getCapabilities()) + && + selectedInList(filter1.getSelectedValues(), + new String[] {dcs[j].getName()}) - && selectedInList(filter2, new String[] + && selectedInList(filter2.getSelectedValues(), + new String[] {dcs[j].getCategory()})) { names.add(ds.getNickname()); @@ -589,9 +620,8 @@ public class DasSourceBrowser extends GDasSourceBrowser refreshTableData(data); } - boolean selectedInList(JList list, String[] items) + boolean selectedInList(Object [] selection, String[] items) { - Object[] selection = list.getSelectedValues(); for (int i = 0; i < selection.length; i++) { if (selection[i].equals("Any")) @@ -638,7 +668,7 @@ public class DasSourceBrowser extends GDasSourceBrowser } } - void saveProperties(Properties properties) + public void saveProperties(Properties properties) { properties.setProperty("DAS_REGISTRY_URL", registryURL.getText()); diff --git a/src/jalview/gui/FeatureSettings.java b/src/jalview/gui/FeatureSettings.java index 4139645..b720008 100755 --- a/src/jalview/gui/FeatureSettings.java +++ b/src/jalview/gui/FeatureSettings.java @@ -28,130 +28,64 @@ import java.awt.event.*; import javax.swing.table.*; import java.io.*; import jalview.io.JalviewFileChooser; +import java.awt.BorderLayout; +import java.awt.Font; +import java.awt.Color; +import org.biojava.dasobert.dasregistry.DasSource; +import org.biojava.dasobert.dasregistry.DasCoordinateSystem; public class FeatureSettings extends JPanel { + DasSourceBrowser dassourceBrowser; + JPanel settingsPane = new JPanel(); + JPanel dasSettingsPane = new JPanel(); final FeatureRenderer fr; - final AlignmentPanel ap; - final AlignViewport av; + final AlignFrame af; Object [][] originalData; final JInternalFrame frame; JScrollPane scrollPane = new JScrollPane(); JTable table; JPanel groupPanel; + JSlider transparency = new JSlider(); + JPanel transPanel = new JPanel(new FlowLayout()); boolean alignmentHasFeatures = false; - public FeatureSettings(AlignViewport av, final AlignmentPanel ap) + public FeatureSettings(AlignFrame af) { - this.ap = ap; - this.av = av; - fr = ap.seqPanel.seqCanvas.getFeatureRenderer(); - if (av.featuresDisplayed == null || fr.renderOrder==null) - fr.findAllFeatures(); + this.af = af; + fr = af.getFeatureRenderer(); - frame = new JInternalFrame(); - frame.setContentPane(this); - Desktop.addInternalFrame(frame, "Sequence Feature Settings", 400, 300); - frame.setLayer(JLayeredPane.PALETTE_LAYER); + transparency.setMaximum( 100 - (int)(fr.transparency*100) ) ; - setTableData(); + try + { + jbInit(); + } + catch (Exception ex) + { + ex.printStackTrace(); + } - final JSlider transparency = new JSlider(0, 70, 100 - (int)(fr.transparency*100) ); - transparency.addChangeListener(new ChangeListener() - { - public void stateChanged(ChangeEvent evt) - { - fr.setTransparency( (float) (100 - transparency.getValue()) / 100f); - ap.repaint(); - } - }); + dassourceBrowser = new DasSourceBrowser(); + dasSettingsPane.add(dassourceBrowser, BorderLayout.CENTER); - JPanel transPanel = new JPanel(new FlowLayout()); - transPanel.add(new JLabel("Transparency")); - transPanel.add(transparency); - JButton button = new JButton("Invert Selection"); - transPanel.add(button); - button.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent evt) - { - invertSelection(); - } - }); - - ////////////////////////////////////////////// - //We're going to need those OK cancel buttons - JPanel buttonPanel = new JPanel(new FlowLayout()); - button = new JButton("OK"); - button.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent evt) - { - try - { - frame.setClosed(true); - } - catch (Exception exe) - {} - } - }); - buttonPanel.add(button); - button = new JButton("Cancel"); - button.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent evt) - { - try - { - updateFeatureRenderer(originalData); - frame.setClosed(true); - } - catch (Exception exe) - {} - } - }); - buttonPanel.add(button); - button = new JButton("Load Colours"); - button.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent evt) - { - load(); - } - }); - buttonPanel.add(button); - button = new JButton("Save Colours"); - button.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent evt) - { - save(); - } - }); - buttonPanel.add(button); - this.setLayout(new BorderLayout()); - JPanel bigPanel = new JPanel(new BorderLayout()); - bigPanel.add(transPanel, BorderLayout.SOUTH); - bigPanel.add(scrollPane, BorderLayout.CENTER); - if(groupPanel!=null) - { - groupPanel.setLayout( - new GridLayout(fr.featureGroups.size() / 4 + 1, 4)); + if (af.getViewport().featuresDisplayed == null || fr.renderOrder==null) + fr.findAllFeatures(); - groupPanel.validate(); - bigPanel.add(groupPanel, BorderLayout.NORTH); - } - add(bigPanel, BorderLayout.CENTER); - add(buttonPanel, BorderLayout.SOUTH); + setTableData(); + frame = new JInternalFrame(); + frame.setContentPane(this); + Desktop.addInternalFrame(frame, "Sequence Feature Settings", 400, 450); + frame.setLayer(JLayeredPane.PALETTE_LAYER); } - void setTableData() + public void setTableData() { alignmentHasFeatures = false; @@ -163,14 +97,14 @@ public class FeatureSettings extends JPanel SequenceFeature[] tmpfeatures; String group; - for (int i = 0; i < av.alignment.getHeight(); i++) + for (int i = 0; i < af.getViewport().alignment.getHeight(); i++) { - if (av.alignment.getSequenceAt(i).getDatasetSequence().getSequenceFeatures() == null) + if (af.getViewport().alignment.getSequenceAt(i).getDatasetSequence().getSequenceFeatures() == null) continue; alignmentHasFeatures = true; - tmpfeatures = av.alignment.getSequenceAt(i).getDatasetSequence().getSequenceFeatures(); + tmpfeatures = af.getViewport().alignment.getSequenceAt(i).getDatasetSequence().getSequenceFeatures(); int index = 0; while (index < tmpfeatures.length) @@ -193,31 +127,31 @@ public class FeatureSettings extends JPanel { visible = ( (Boolean) fr.featureGroups.get(group)).booleanValue(); } - - fr.featureGroups.put(group, new Boolean(visible)); - - if (groupPanel == null) + else { - groupPanel = new JPanel(); - } - - final JCheckBox check = new JCheckBox(group, visible); - check.setFont(new Font("Serif", Font.BOLD, 12)); - check.addItemListener(new ItemListener() - { - public void itemStateChanged(ItemEvent evt) + fr.featureGroups.put(group, new Boolean(visible)); + if (groupPanel == null) { - fr.featureGroups.put(check.getText(), - new Boolean(check.isSelected())); - ap.seqPanel.seqCanvas.repaint(); - if (ap.overviewPanel != null) - ap.overviewPanel.updateOverviewImage(); - - resetTable(true); + groupPanel = new JPanel(); } - }); - groupPanel.add(check); + final JCheckBox check = new JCheckBox(group, visible); + check.setFont(new Font("Serif", Font.BOLD, 12)); + check.addItemListener(new ItemListener() + { + public void itemStateChanged(ItemEvent evt) + { + fr.featureGroups.put(check.getText(), + new Boolean(check.isSelected())); + af.alignPanel.seqPanel.seqCanvas.repaint(); + if (af.alignPanel.overviewPanel != null) + af.alignPanel.overviewPanel.updateOverviewImage(); + + resetTable(true); + } + }); + groupPanel.add(check); + } } } @@ -233,20 +167,20 @@ public class FeatureSettings extends JPanel if(!alignmentHasFeatures) { - try - { frame.setClosed(true); } - catch (Exception ex){} - - JOptionPane.showInternalMessageDialog( - Desktop.desktop, "No features have been added to this alignment!", - "No Sequence Features", JOptionPane.WARNING_MESSAGE); - - return; + // try + // { frame.setClosed(true); } + // catch (Exception ex){} + + // JOptionPane.showInternalMessageDialog( + /// Desktop.desktop, "No features have been added to this alignment!", + // + // return; } resetTable(false); } + void resetTable(boolean groupsChanged) { SequenceFeature [] tmpfeatures; @@ -255,12 +189,13 @@ public class FeatureSettings extends JPanel //Find out which features should be visible depending on which groups //are selected / deselected - for (int i = 0; i < av.alignment.getHeight(); i++) + for (int i = 0; i < af.getViewport().alignment.getHeight(); i++) { - if (av.alignment.getSequenceAt(i).getDatasetSequence().getSequenceFeatures() == null) + + tmpfeatures = af.getViewport().alignment.getSequenceAt(i).getDatasetSequence().getSequenceFeatures(); + if (tmpfeatures == null) continue; - tmpfeatures = av.alignment.getSequenceAt(i).getDatasetSequence().getSequenceFeatures(); int index = 0; while (index < tmpfeatures.length) { @@ -302,7 +237,7 @@ public class FeatureSettings extends JPanel data[dataIndex][0] = type; data[dataIndex][1] = fr.getColour(type); - data[dataIndex][2] = new Boolean(av.featuresDisplayed.containsKey(type)); + data[dataIndex][2] = new Boolean(af.getViewport().featuresDisplayed.containsKey(type)); dataIndex++; visibleChecks.removeElement(type); } @@ -376,6 +311,15 @@ public class FeatureSettings extends JPanel } }); + if (groupPanel != null) + { + groupPanel.setLayout( + new GridLayout(fr.featureGroups.size() / 4 + 1, 4)); + + groupPanel.validate(); + bigPanel.add(groupPanel, BorderLayout.NORTH); + } + updateFeatureRenderer(data); } @@ -412,11 +356,11 @@ public class FeatureSettings extends JPanel } setTableData(); - ap.repaint(); + af.alignPanel.repaint(); } catch (Exception ex) { - System.out.println("Error loading User ColourFile\n" + ex); + System.out.println("Error loading User Colour File\n" + ex); } } } @@ -472,20 +416,179 @@ public class FeatureSettings extends JPanel new Boolean(!value.booleanValue()), i,2); } + } + + public void close() + { + try + { + frame.setClosed(true); + } + catch (Exception exe) + {} } public void updateFeatureRenderer(Object [][] data) { fr.setFeaturePriority( data ); - ap.repaint(); + af.alignPanel.repaint(); - if(ap.overviewPanel!=null) - ap.overviewPanel.updateOverviewImage(); + if(af.alignPanel.overviewPanel!=null) + af.alignPanel.overviewPanel.updateOverviewImage(); } int selectedRow =-1; + JTabbedPane tabbedPane = new JTabbedPane(); + BorderLayout borderLayout1 = new BorderLayout(); + BorderLayout borderLayout2 = new BorderLayout(); + BorderLayout borderLayout3 = new BorderLayout(); + JPanel bigPanel = new JPanel(); + BorderLayout borderLayout4 = new BorderLayout(); + JButton invert = new JButton(); + JPanel buttonPanel = new JPanel(); + JButton cancel = new JButton(); + JButton ok = new JButton(); + JButton loadColours = new JButton(); + JButton saveColours = new JButton(); + JPanel dasButtonPanel = new JPanel(); + JButton fetchDAS = new JButton(); + JButton saveDAS = new JButton(); + private void jbInit() + throws Exception + { + this.setLayout(borderLayout1); + settingsPane.setLayout(borderLayout2); + dasSettingsPane.setLayout(borderLayout3); + bigPanel.setLayout(borderLayout4); + invert.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); + invert.setText("Invert Selection"); + invert.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + invertSelection(); + } + }); + cancel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); + cancel.setText("Cancel"); + cancel.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + updateFeatureRenderer(originalData); + close(); + } + }); + ok.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); + ok.setText("OK"); + ok.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + close(); + } + }); + loadColours.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); + loadColours.setText("Load Colours"); + loadColours.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + load(); + } + }); + saveColours.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); + saveColours.setText("Save Colours"); + saveColours.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + save(); + } + }); + transparency.addChangeListener(new ChangeListener() + { + public void stateChanged(ChangeEvent evt) + { + fr.setTransparency( (float) (100 - transparency.getValue()) / 100f); + af.alignPanel.repaint(); + } + }); + + transparency.setMaximum(70); + fetchDAS.setText("Fetch DAS Features"); + fetchDAS.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + fetchDAS_actionPerformed(e); + } + }); + saveDAS.setText("Save as default"); + saveDAS.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + saveDAS_actionPerformed(e); + } + }); + dasButtonPanel.setBorder(BorderFactory.createEtchedBorder()); + dasSettingsPane.setBorder(null); + this.add(tabbedPane, java.awt.BorderLayout.CENTER); + tabbedPane.addTab("Display Settings", settingsPane ); + tabbedPane.addTab("DAS Settings", dasSettingsPane); + bigPanel.add(transPanel, java.awt.BorderLayout.SOUTH); + transPanel.add(transparency); + transPanel.add(invert); + buttonPanel.add(ok); + buttonPanel.add(cancel); + buttonPanel.add(loadColours); + buttonPanel.add(saveColours); + bigPanel.add(scrollPane, java.awt.BorderLayout.CENTER); + dasSettingsPane.add(dasButtonPanel, java.awt.BorderLayout.SOUTH); + dasButtonPanel.add(fetchDAS); + dasButtonPanel.add(saveDAS); + settingsPane.add(bigPanel, java.awt.BorderLayout.CENTER); + settingsPane.add(buttonPanel, java.awt.BorderLayout.SOUTH); + } + + public void fetchDAS_actionPerformed(ActionEvent e) + { + Vector selectedSources = dassourceBrowser.getSelectedSources(); + + int uniprotCount = 0; + for(int i=0; i