X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FFeatureRenderer.java;h=b9796744745a207dfdb3ff84df51fcf894a9b950;hb=65d6d09cd08743d481d39521bb0298ea683888f8;hp=97515141b14d418be35229d4dc3fcce1dd92b061;hpb=ed2283c5f54da377a2a2fdbdb7aec75ed7041714;p=jalview.git diff --git a/src/jalview/appletgui/FeatureRenderer.java b/src/jalview/appletgui/FeatureRenderer.java index 9751514..b979674 100644 --- a/src/jalview/appletgui/FeatureRenderer.java +++ b/src/jalview/appletgui/FeatureRenderer.java @@ -20,16 +20,36 @@ */ package jalview.appletgui; -import java.util.*; -import java.awt.*; -import java.awt.event.*; - -import jalview.datamodel.*; -import jalview.schemes.AnnotationColourGradient; -import jalview.schemes.GraduatedColor; +import jalview.api.FeatureColourI; +import jalview.datamodel.SearchResults; +import jalview.datamodel.SequenceFeature; +import jalview.datamodel.SequenceI; +import jalview.io.FeaturesFile; +import jalview.schemes.Colour; +import jalview.schemes.FeatureColour; +import jalview.schemes.UserColourScheme; +import jalview.util.ColorUtils; import jalview.util.MessageManager; import jalview.viewmodel.AlignmentViewport; -import jalview.viewmodel.seqfeatures.FeaturesDisplayed; + +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Choice; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.GridLayout; +import java.awt.Label; +import java.awt.Panel; +import java.awt.ScrollPane; +import java.awt.TextArea; +import java.awt.TextField; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.Hashtable; /** * DOCUMENT ME! @@ -37,13 +57,9 @@ import jalview.viewmodel.seqfeatures.FeaturesDisplayed; * @author $author$ * @version $Revision$ */ -public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRenderer +public class FeatureRenderer extends + jalview.renderer.seqfeatures.FeatureRenderer { - - // Holds web links for feature groups and feature types - // in the form label|link - Hashtable featureLinks = null; - /** * Creates a new FeatureRenderer object. * @@ -54,8 +70,6 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere { super(); this.av = av; - - setTransparencyAvailable(!System.getProperty("java.version").startsWith("1.1")); } static String lastFeatureAdded; @@ -81,49 +95,35 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere /** * render a feature style in the amend feature dialog box */ - public void updateColor(Object newcol) + public void updateColor(FeatureColourI newcol) { - - Color bg, col = null; - GraduatedColor gcol = null; + Color bg = null; String vlabel = ""; - if (newcol instanceof Color) - { - isGcol = false; - col = (Color) newcol; - gcol = null; - } - else if (newcol instanceof GraduatedColor) - { - isGcol = true; - gcol = (GraduatedColor) newcol; - col = null; - } - else + if (newcol.isSimpleColour()) { - throw new Error(MessageManager.getString("error.invalid_colour_for_mycheckbox")); - } - if (col != null) - { - setBackground(bg = col); + bg = ColorUtils.getColor(newcol.getColour()); + setBackground(bg); } else { - if (gcol.getThreshType() != AnnotationColourGradient.NO_THRESHOLD) + if (newcol.isAboveThreshold()) + { + vlabel += " (>)"; + } + else if (newcol.isBelowThreshold()) { - vlabel += " " - + ((gcol.getThreshType() == AnnotationColourGradient.ABOVE_THRESHOLD) ? "(>)" - : "(<)"); + vlabel += " (<)"; } - if (isColourByLabel = gcol.isColourByLabel()) + + if (isColourByLabel = newcol.isColourByLabel()) { setBackground(bg = Color.white); vlabel += " (by Label)"; } else { - setBackground(bg = gcol.getMinColor()); - maxCol = gcol.getMaxColor(); + setBackground(bg = ColorUtils.getColor(newcol.getMinColour())); + maxCol = ColorUtils.getColor(newcol.getMaxColour()); } } label = vlabel; @@ -136,6 +136,7 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere super(null); } + @Override public void paint(Graphics g) { Dimension d = getSize(); @@ -198,7 +199,9 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere + "-" + features[i].getEnd(); if (features[i].getFeatureGroup() != null) + { item += " (" + features[i].getFeatureGroup() + ")"; + } overlaps.addItem(item); } @@ -207,6 +210,7 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere overlaps.addItemListener(new java.awt.event.ItemListener() { + @Override public void itemStateChanged(java.awt.event.ItemEvent e) { int index = overlaps.getSelectedIndex(); @@ -226,11 +230,12 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere ap.seqPanel.seqCanvas.highlightSearchResults(highlight); } - Object col = getFeatureStyle(name.getText()); + FeatureColourI col = getFeatureStyle(name.getText()); if (col == null) { - col = new jalview.schemes.UserColourScheme() + Color generatedColour = UserColourScheme .createColourFromName(name.getText()); + col = new FeatureColour(new Colour(generatedColour)); } colourPanel.updateColor(col); @@ -303,8 +308,10 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere } } - String title = newFeatures ? MessageManager.getString("label.create_new_sequence_features") - : MessageManager.formatMessage("label.amend_delete_features", new String[]{sequences[0].getName()}); + String title = newFeatures ? MessageManager + .getString("label.create_new_sequence_features") + : MessageManager.formatMessage("label.amend_delete_features", + new String[] { sequences[0].getName() }); final JVDialog dialog = new JVDialog(ap.alignFrame, title, true, 385, 240); @@ -322,6 +329,7 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere dialog.buttonPanel.add(deleteButton, 1); deleteButton.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent evt) { deleteFeature = true; @@ -335,20 +343,16 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere start.setText(features[0].getBegin() + ""); end.setText(features[0].getEnd() + ""); description.setText(features[0].getDescription()); - Color col = getColour(name.getText()); - if (col == null) - { - col = new jalview.schemes.UserColourScheme() - .createColourFromName(name.getText()); - } - Object fcol = getFeatureStyle(name.getText()); + // lookup (or generate) the feature colour + FeatureColourI fcol = getFeatureStyle(name.getText()); // simply display the feature color in a box colourPanel.updateColor(fcol); dialog.setResizable(true); // TODO: render the graduated color in the box. - colourPanel.addMouseListener(new java.awt.event.MouseAdapter() + colourPanel.addMouseListener(new MouseAdapter() { - public void mousePressed(java.awt.event.MouseEvent evt) + @Override + public void mousePressed(MouseEvent evt) { if (!colourPanel.isGcol) { @@ -356,15 +360,14 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere } else { - FeatureColourChooser fcc = new FeatureColourChooser( - ap.alignFrame, name.getText()); + new FeatureColourChooser(ap.alignFrame, name.getText()); dialog.transferFocus(); } } }); dialog.setVisible(true); - jalview.io.FeaturesFile ffile = new jalview.io.FeaturesFile(); + FeaturesFile ffile = new FeaturesFile(); if (dialog.accept) { @@ -377,7 +380,9 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere } if (lastFeatureGroupAdded != null && lastFeatureGroupAdded.length() < 1) + { lastFeatureGroupAdded = null; + } if (!newFeatures) { @@ -391,7 +396,9 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere if (!colourPanel.isGcol) { // update colour - otherwise its already done. - setColour(sf.type, colourPanel.getBackground()); + setColour( + sf.type, + new FeatureColour(new Colour(colourPanel.getBackground()))); } try { @@ -402,7 +409,8 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere } ffile.parseDescriptionHTML(sf, false); - setVisible(lastFeatureAdded); // if user edited name then make sure new type is visible + setVisible(lastFeatureAdded); // if user edited name then make sure new + // type is visible } if (deleteFeature) { @@ -423,16 +431,17 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere ffile.parseDescriptionHTML(features[i], false); } - col = colourPanel.getBackground(); + Color newColour = colourPanel.getBackground(); // setColour(lastFeatureAdded, fcol); if (lastFeatureGroupAdded != null) { setGroupVisibility(lastFeatureGroupAdded, true); } - setColour(lastFeatureAdded, fcol); + setColour(lastFeatureAdded, + new FeatureColour(new Colour(newColour))); // was fcol setVisible(lastFeatureAdded); - findAllFeatures(false); // different to original applet behaviour ? + findAllFeatures(false); // different to original applet behaviour ? // findAllFeatures(); } else