X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FFeatureSettings.java;h=09204d1c2f11969c557d83b8ecfcd5fd44867db1;hb=6d07cb75009ac12ca524c9c1bcb54a4a81a76d42;hp=6b58b512d3788a94753ed37a9b63dc7453d372fc;hpb=4d7f98a6dd54d9863ba449ec79dcd95d25ed863d;p=jalview.git diff --git a/src/jalview/gui/FeatureSettings.java b/src/jalview/gui/FeatureSettings.java index 6b58b51..09204d1 100644 --- a/src/jalview/gui/FeatureSettings.java +++ b/src/jalview/gui/FeatureSettings.java @@ -28,7 +28,9 @@ import jalview.gui.Help.HelpId; import jalview.io.JalviewFileChooser; import jalview.schemes.AnnotationColourGradient; import jalview.schemes.GraduatedColor; +import jalview.util.Format; import jalview.util.MessageManager; +import jalview.util.QuickSort; import jalview.viewmodel.AlignmentViewport; import jalview.ws.dbsources.das.api.jalviewSourceI; @@ -54,9 +56,11 @@ import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; +import java.util.Arrays; import java.util.Hashtable; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.Vector; @@ -164,10 +168,11 @@ public class FeatureSettings extends JPanel implements table.addMouseListener(new MouseAdapter() { + @Override public void mousePressed(MouseEvent evt) { selectedRow = table.rowAtPoint(evt.getPoint()); - if (SwingUtilities.isRightMouseButton(evt)) + if (evt.isPopupTrigger()) { popupSort(selectedRow, (String) table.getValueAt(selectedRow, 0), table.getValueAt(selectedRow, 1), fr.getMinMax(), @@ -198,24 +203,19 @@ public class FeatureSettings extends JPanel implements table.addMouseMotionListener(new MouseMotionAdapter() { + @Override public void mouseDragged(MouseEvent evt) { int newRow = table.rowAtPoint(evt.getPoint()); if (newRow != selectedRow && selectedRow != -1 && newRow != -1) { - Object[] temp = new Object[3]; - temp[0] = table.getValueAt(selectedRow, 0); - temp[1] = table.getValueAt(selectedRow, 1); - temp[2] = table.getValueAt(selectedRow, 2); - - table.setValueAt(table.getValueAt(newRow, 0), selectedRow, 0); - table.setValueAt(table.getValueAt(newRow, 1), selectedRow, 1); - table.setValueAt(table.getValueAt(newRow, 2), selectedRow, 2); - - table.setValueAt(temp[0], newRow, 0); - table.setValueAt(temp[1], newRow, 1); - table.setValueAt(temp[2], newRow, 2); - + Object[][] data = ((FeatureTableModel) table.getModel()) + .getData(); + Object[] temp = data[selectedRow]; + data[selectedRow] = data[newRow]; + data[newRow] = temp; + updateFeatureRenderer(data); + table.repaint(); selectedRow = newRow; } } @@ -237,6 +237,7 @@ public class FeatureSettings extends JPanel implements final FeatureSettings fs = this; fr.addPropertyChangeListener(change = new PropertyChangeListener() { + @Override public void propertyChange(PropertyChangeEvent evt) { if (!fs.resettingTable && !fs.handlingUpdate) @@ -267,6 +268,7 @@ public class FeatureSettings extends JPanel implements frame.addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() { + @Override public void internalFrameClosed( javax.swing.event.InternalFrameEvent evt) { @@ -278,7 +280,8 @@ public class FeatureSettings extends JPanel implements } protected void popupSort(final int selectedRow, final String type, - final Object typeCol, final Hashtable minmax, int x, int y) + final Object typeCol, final Map minmax, int x, + int y) { JPopupMenu men = new JPopupMenu(MessageManager.formatMessage( "label.settings_for_param", new String[] { type })); @@ -289,9 +292,11 @@ public class FeatureSettings extends JPanel implements scr.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - me.af.avc.sortAlignmentByFeatureScore(new String[] { type }); + me.af.avc.sortAlignmentByFeatureScore(Arrays + .asList(new String[] { type })); } }); @@ -300,16 +305,18 @@ public class FeatureSettings extends JPanel implements dens.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - me.af.avc.sortAlignmentByFeatureDensity(new String[] { type }); + me.af.avc.sortAlignmentByFeatureDensity(Arrays + .asList(new String[] { type })); } }); men.add(dens); if (minmax != null) { - final Object typeMinMax = minmax.get(type); + final float[][] typeMinMax = minmax.get(type); /* * final JCheckBoxMenuItem chb = new JCheckBoxMenuItem("Vary Height"); // * this is broken at the moment and isn't that useful anyway! @@ -324,7 +331,7 @@ public class FeatureSettings extends JPanel implements * * men.add(chb); */ - if (typeMinMax != null && ((float[][]) typeMinMax)[0] != null) + if (typeMinMax != null && typeMinMax[0] != null) { // if (table.getValueAt(row, column)); // graduated colourschemes for those where minmax exists for the @@ -337,6 +344,7 @@ public class FeatureSettings extends JPanel implements { JColorChooser colorChooser; + @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == mxcol) @@ -388,7 +396,6 @@ public class FeatureSettings extends JPanel implements MessageManager.getString("label.select_columns_containing")); selCols.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent arg0) { @@ -400,7 +407,6 @@ public class FeatureSettings extends JPanel implements MessageManager.getString("label.select_columns_not_containing")); clearCols.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent arg0) { @@ -408,8 +414,30 @@ public class FeatureSettings extends JPanel implements false, type); } }); + JMenuItem hideCols = new JMenuItem( + MessageManager.getString("label.hide_columns_containing")); + hideCols.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent arg0) + { + fr.ap.alignFrame.hideFeatureColumns(type, true); + } + }); + JMenuItem hideOtherCols = new JMenuItem( + MessageManager.getString("label.hide_columns_not_containing")); + hideOtherCols.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent arg0) + { + fr.ap.alignFrame.hideFeatureColumns(type, false); + } + }); men.add(selCols); men.add(clearCols); + men.add(hideCols); + men.add(hideOtherCols); men.show(table, x, y); } @@ -507,6 +535,7 @@ public class FeatureSettings extends JPanel implements check.setFont(new Font("Serif", Font.BOLD, 12)); check.addItemListener(new ItemListener() { + @Override public void itemStateChanged(ItemEvent evt) { fr.setGroupVisibility(check.getText(), check.isSelected()); @@ -803,7 +832,7 @@ public class FeatureSettings extends JPanel implements void save() { JalviewFileChooser chooser = new JalviewFileChooser( - jalview.bin.Cache.getProperty("LAST_DIRECTORY"), + Cache.getProperty("LAST_DIRECTORY"), new String[] { "fc" }, new String[] { "Sequence Feature Colours" }, "Sequence Feature Colours"); @@ -824,34 +853,35 @@ public class FeatureSettings extends JPanel implements PrintWriter out = new PrintWriter(new OutputStreamWriter( new FileOutputStream(choice), "UTF-8")); - Set fr_colours = fr.getAllFeatureColours(); - Iterator e = fr_colours.iterator(); + Set fr_colours = fr.getAllFeatureColours(); + Iterator e = fr_colours.iterator(); float[] sortOrder = new float[fr_colours.size()]; String[] sortTypes = new String[fr_colours.size()]; int i = 0; while (e.hasNext()) { - sortTypes[i] = e.next().toString(); + sortTypes[i] = e.next(); sortOrder[i] = fr.getOrder(sortTypes[i]); i++; } - jalview.util.QuickSort.sort(sortOrder, sortTypes); + QuickSort.sort(sortOrder, sortTypes); sortOrder = null; Object fcol; GraduatedColor gcol; - for (i = 0; i < sortTypes.length; i++) + for (String featureType : sortTypes) { jalview.schemabinding.version2.Colour col = new jalview.schemabinding.version2.Colour(); - col.setName(sortTypes[i]); - col.setRGB(jalview.util.Format.getHexString(fr.getColour(col - .getName()))); - fcol = fr.getFeatureStyle(sortTypes[i]); + col.setName(featureType); + fcol = fr.getFeatureStyle(featureType); + Color colour = fcol instanceof Color ? (Color) fcol + : ((GraduatedColor) fcol).getMaxColor(); + col.setRGB(Format.getHexString(colour)); if (fcol instanceof GraduatedColor) { gcol = (GraduatedColor) fcol; col.setMin(gcol.getMin()); col.setMax(gcol.getMax()); - col.setMinRGB(jalview.util.Format.getHexString(gcol + col.setMinRGB(Format.getHexString(gcol .getMinColor())); col.setAutoScale(gcol.isAutoScale()); col.setThreshold(gcol.getThresh()); @@ -969,10 +999,19 @@ public class FeatureSettings extends JPanel implements updateFeatureRenderer(data, true); } + /** + * Update the priority order of features; only repaint if this changed the + * order of visible features + * + * @param data + * @param visibleNew + */ private void updateFeatureRenderer(Object[][] data, boolean visibleNew) { - fr.setFeaturePriority(data, visibleNew); - af.alignPanel.paintAlignment(true); + if (fr.setFeaturePriority(data, visibleNew)) + { + af.alignPanel.paintAlignment(true); + } } int selectedRow = -1; @@ -1029,6 +1068,7 @@ public class FeatureSettings extends JPanel implements invert.setText(MessageManager.getString("label.invert_selection")); invert.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { invertSelection(); @@ -1038,6 +1078,7 @@ public class FeatureSettings extends JPanel implements optimizeOrder.setText(MessageManager.getString("label.optimise_order")); optimizeOrder.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { orderByAvWidth(); @@ -1048,6 +1089,7 @@ public class FeatureSettings extends JPanel implements .setText(MessageManager.getString("label.seq_sort_by_score")); sortByScore.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { af.avc.sortAlignmentByFeatureScore(null); @@ -1058,6 +1100,7 @@ public class FeatureSettings extends JPanel implements .getString("label.sequence_sort_by_density")); sortByDens.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { af.avc.sortAlignmentByFeatureDensity(null); @@ -1067,6 +1110,7 @@ public class FeatureSettings extends JPanel implements help.setText(MessageManager.getString("action.help")); help.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { try @@ -1082,6 +1126,7 @@ public class FeatureSettings extends JPanel implements help.setText(MessageManager.getString("action.help")); help.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { try @@ -1097,6 +1142,7 @@ public class FeatureSettings extends JPanel implements cancel.setText(MessageManager.getString("action.cancel")); cancel.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { fr.setTransparency(originalTransparency); @@ -1108,6 +1154,7 @@ public class FeatureSettings extends JPanel implements ok.setText(MessageManager.getString("action.ok")); ok.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { close(); @@ -1117,6 +1164,7 @@ public class FeatureSettings extends JPanel implements loadColours.setText(MessageManager.getString("label.load_colours")); loadColours.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { load(); @@ -1126,6 +1174,7 @@ public class FeatureSettings extends JPanel implements saveColours.setText(MessageManager.getString("label.save_colours")); saveColours.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { save(); @@ -1133,6 +1182,7 @@ public class FeatureSettings extends JPanel implements }); transparency.addChangeListener(new ChangeListener() { + @Override public void stateChanged(ChangeEvent evt) { fr.setTransparency((100 - transparency.getValue()) / 100f); @@ -1146,6 +1196,7 @@ public class FeatureSettings extends JPanel implements fetchDAS.setText(MessageManager.getString("label.fetch_das_features")); fetchDAS.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { fetchDAS_actionPerformed(e); @@ -1154,6 +1205,7 @@ public class FeatureSettings extends JPanel implements saveDAS.setText(MessageManager.getString("action.save_as_default")); saveDAS.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { saveDAS_actionPerformed(e); @@ -1165,6 +1217,7 @@ public class FeatureSettings extends JPanel implements cancelDAS.setText(MessageManager.getString("action.cancel_fetch")); cancelDAS.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { cancelDAS_actionPerformed(e); @@ -1273,7 +1326,7 @@ public class FeatureSettings extends JPanel implements * * @return vector of selected das source nicknames */ - public Vector getSelectedSources() + public Vector getSelectedSources() { return dassourceBrowser.getSelectedSources(); } @@ -1304,6 +1357,7 @@ public class FeatureSettings extends JPanel implements Runnable fetcher = new Runnable() { + @Override public void run() { doDasFeatureFetch(dassources, true, false); @@ -1385,6 +1439,7 @@ public class FeatureSettings extends JPanel implements this.data = data; } + @Override public int getColumnCount() { return columnNames.length; @@ -1395,31 +1450,37 @@ public class FeatureSettings extends JPanel implements return data[row]; } + @Override public int getRowCount() { return data.length; } + @Override public String getColumnName(int col) { return columnNames[col]; } + @Override public Object getValueAt(int row, int col) { return data[row][col]; } + @Override public Class getColumnClass(int c) { return getValueAt(0, c).getClass(); } + @Override public boolean isCellEditable(int row, int col) { return col == 0 ? false : true; } + @Override public void setValueAt(Object value, int row, int col) { data[row][col] = value; @@ -1444,6 +1505,7 @@ public class FeatureSettings extends JPanel implements setVerticalTextPosition(SwingConstants.CENTER); } + @Override public Component getTableCellRendererComponent(JTable table, Object color, boolean isSelected, boolean hasFocus, int row, int column) @@ -1609,16 +1671,19 @@ class FeatureIcon implements Icon } } + @Override public int getIconWidth() { return width; } + @Override public int getIconHeight() { return height; } + @Override public void paintIcon(Component c, Graphics g, int x, int y) { @@ -1699,6 +1764,7 @@ class ColorEditor extends AbstractCellEditor implements TableCellEditor, /** * Handles events from the editor button and from the dialog's OK button. */ + @Override public void actionPerformed(ActionEvent e) { @@ -1744,6 +1810,7 @@ class ColorEditor extends AbstractCellEditor implements TableCellEditor, } // Implement the one CellEditor method that AbstractCellEditor doesn't. + @Override public Object getCellEditorValue() { if (currentColor == null) @@ -1754,6 +1821,7 @@ class ColorEditor extends AbstractCellEditor implements TableCellEditor, } // Implement the one method defined by TableCellEditor. + @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {