X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FFeatureSettings.java;h=693e6fe63dbdaa20974619bc6f5ec2f6b05a8760;hb=refs%2Fheads%2Ffeatures%2FJAL-1264_showHideAnnotations;hp=9e0925b73bfb30e68275758c9a6c674b468fd975;hpb=7c7a5a297e063d3892dd7e629bc317cdde837b81;p=jalview.git diff --git a/src/jalview/gui/FeatureSettings.java b/src/jalview/gui/FeatureSettings.java index 9e0925b..693e6fe 100644 --- a/src/jalview/gui/FeatureSettings.java +++ b/src/jalview/gui/FeatureSettings.java @@ -1,45 +1,94 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1) + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2) * Copyright (C) 2014 The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along with Jalview. If not, see . + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.gui; -import java.io.*; -import java.util.*; -import java.util.List; -import java.awt.*; -import java.awt.event.*; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - -import javax.swing.*; -import javax.swing.event.*; -import javax.swing.table.*; - import jalview.analysis.AlignmentSorter; import jalview.bin.Cache; import jalview.commands.OrderCommand; -import jalview.datamodel.*; -import jalview.io.*; +import jalview.datamodel.AlignmentI; +import jalview.datamodel.SequenceFeature; +import jalview.datamodel.SequenceGroup; +import jalview.datamodel.SequenceI; +import jalview.io.JalviewFileChooser; import jalview.schemes.AnnotationColourGradient; import jalview.schemes.GraduatedColor; import jalview.util.MessageManager; import jalview.ws.dbsources.das.api.jalviewSourceI; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.GridLayout; +import java.awt.Rectangle; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseMotionAdapter; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.List; +import java.util.Vector; + +import javax.swing.AbstractCellEditor; +import javax.swing.BorderFactory; +import javax.swing.Icon; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JColorChooser; +import javax.swing.JDialog; +import javax.swing.JInternalFrame; +import javax.swing.JLabel; +import javax.swing.JLayeredPane; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; +import javax.swing.JSlider; +import javax.swing.JTabbedPane; +import javax.swing.JTable; +import javax.swing.ListSelectionModel; +import javax.swing.SwingConstants; +import javax.swing.SwingUtilities; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; + public class FeatureSettings extends JPanel { DasSourceBrowser dassourceBrowser; @@ -99,7 +148,7 @@ public class FeatureSettings extends JPanel public void mousePressed(MouseEvent evt) { selectedRow = table.rowAtPoint(evt.getPoint()); - if (evt.isPopupTrigger()) + if (SwingUtilities.isRightMouseButton(evt)) { popupSort(selectedRow, (String) table.getValueAt(selectedRow, 0), table.getValueAt(selectedRow, 1), fr.minmax, evt.getX(), @@ -108,10 +157,24 @@ public class FeatureSettings extends JPanel else if (evt.getClickCount() == 2) { fr.ap.alignFrame.avc.markColumnsContainingFeatures( - evt.isShiftDown(), + evt.isAltDown(), evt.isShiftDown() || evt.isMetaDown(), + evt.isMetaDown(), (String) table.getValueAt(selectedRow, 0)); } } + + // isPopupTrigger fires on mouseReleased on Mac + @Override + public void mouseReleased(MouseEvent evt) + { + selectedRow = table.rowAtPoint(evt.getPoint()); + if (evt.isPopupTrigger()) + { + popupSort(selectedRow, (String) table.getValueAt(selectedRow, 0), + table.getValueAt(selectedRow, 1), fr.minmax, evt.getX(), + evt.getY()); + } + } }); table.addMouseMotionListener(new MouseMotionAdapter() @@ -138,7 +201,8 @@ public class FeatureSettings extends JPanel } } }); - + table.setToolTipText(JvSwingUtils + .wrapTooltip(true, MessageManager.getString("label.feature_settings_click_drag"))); scrollPane.setViewportView(table); dassourceBrowser = new DasSourceBrowser(this); @@ -172,11 +236,15 @@ public class FeatureSettings extends JPanel frame.setContentPane(this); if (new jalview.util.Platform().isAMac()) { - Desktop.addInternalFrame(frame, MessageManager.getString("label.sequence_feature_settings"), 475, 480); + Desktop.addInternalFrame(frame, + MessageManager.getString("label.sequence_feature_settings"), + 475, 480); } else { - Desktop.addInternalFrame(frame, MessageManager.getString("label.sequence_feature_settings"), 400, 450); + Desktop.addInternalFrame(frame, + MessageManager.getString("label.sequence_feature_settings"), + 400, 450); } frame.addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() @@ -194,8 +262,11 @@ public class FeatureSettings extends JPanel protected void popupSort(final int selectedRow, final String type, final Object typeCol, final Hashtable minmax, int x, int y) { - JPopupMenu men = new JPopupMenu(MessageManager.formatMessage("label.settings_for_param", new String[]{type})); - JMenuItem scr = new JMenuItem(MessageManager.getString("label.sort_by_score")); + JPopupMenu men = new JPopupMenu(MessageManager.formatMessage( + "label.settings_for_param", new String[] + { type })); + JMenuItem scr = new JMenuItem( + MessageManager.getString("label.sort_by_score")); men.add(scr); final FeatureSettings me = this; scr.addActionListener(new ActionListener() @@ -208,7 +279,8 @@ public class FeatureSettings extends JPanel } }); - JMenuItem dens = new JMenuItem(MessageManager.getString("label.sort_by_density")); + JMenuItem dens = new JMenuItem( + MessageManager.getString("label.sort_by_density")); dens.addActionListener(new ActionListener() { @@ -297,24 +369,28 @@ public class FeatureSettings extends JPanel }); } } - JMenuItem selCols = new JMenuItem(MessageManager.getString("label.select_columns_containing")); + JMenuItem selCols = new JMenuItem( + MessageManager.getString("label.select_columns_containing")); selCols.addActionListener(new ActionListener() { - + @Override public void actionPerformed(ActionEvent arg0) { - fr.ap.alignFrame.avc.markColumnsContainingFeatures(false, type); + fr.ap.alignFrame.avc.markColumnsContainingFeatures(false, false, + false, type); } }); - JMenuItem clearCols = new JMenuItem(MessageManager.getString("label.select_columns_not_containing")); + JMenuItem clearCols = new JMenuItem( + MessageManager.getString("label.select_columns_not_containing")); clearCols.addActionListener(new ActionListener() { - + @Override public void actionPerformed(ActionEvent arg0) { - fr.ap.alignFrame.avc.markColumnsContainingFeatures(true, type); + fr.ap.alignFrame.avc.markColumnsContainingFeatures(true, false, + false, type); } }); men.add(selCols); @@ -630,7 +706,7 @@ public class FeatureSettings extends JPanel { "fc" }, new String[] { "Sequence Feature Colours" }, "Sequence Feature Colours"); chooser.setFileView(new jalview.io.JalviewFileView()); - chooser.setDialogTitle("Load Feature Colours"); + chooser.setDialogTitle(MessageManager.getString("label.load_feature_colours")); chooser.setToolTipText(MessageManager.getString("action.load")); int value = chooser.showOpenDialog(this); @@ -645,7 +721,7 @@ public class FeatureSettings extends JPanel file), "UTF-8"); jalview.schemabinding.version2.JalviewUserColours jucs = new jalview.schemabinding.version2.JalviewUserColours(); - jucs = (jalview.schemabinding.version2.JalviewUserColours) jucs + jucs = jucs .unmarshal(in); for (int i = jucs.getColourCount() - 1; i >= 0; i--) @@ -728,7 +804,7 @@ public class FeatureSettings extends JPanel { "fc" }, new String[] { "Sequence Feature Colours" }, "Sequence Feature Colours"); chooser.setFileView(new jalview.io.JalviewFileView()); - chooser.setDialogTitle("Save Feature Colour Scheme"); + chooser.setDialogTitle(MessageManager.getString("label.save_feature_colours")); chooser.setToolTipText(MessageManager.getString("action.save")); int value = chooser.showSaveDialog(this); @@ -952,7 +1028,8 @@ public class FeatureSettings extends JPanel } }); sortByScore.setFont(JvSwingUtils.getLabelFont()); - sortByScore.setText(MessageManager.getString("label.seq_sort_by_score")); + sortByScore + .setText(MessageManager.getString("label.seq_sort_by_score")); sortByScore.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) @@ -961,7 +1038,8 @@ public class FeatureSettings extends JPanel } }); sortByDens.setFont(JvSwingUtils.getLabelFont()); - sortByDens.setText(MessageManager.getString("label.sequence_sort_by_density")); + sortByDens.setText(MessageManager + .getString("label.sequence_sort_by_density")); sortByDens.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) @@ -1010,7 +1088,7 @@ public class FeatureSettings extends JPanel { public void stateChanged(ChangeEvent evt) { - fr.setTransparency((float) (100 - transparency.getValue()) / 100f); + fr.setTransparency((100 - transparency.getValue()) / 100f); af.alignPanel.paintAlignment(true); } }); @@ -1044,8 +1122,8 @@ public class FeatureSettings extends JPanel } }); this.add(tabbedPane, java.awt.BorderLayout.CENTER); - tabbedPane.addTab("Feature Settings", settingsPane); - tabbedPane.addTab("DAS Settings", dasSettingsPane); + tabbedPane.addTab(MessageManager.getString("label.feature_settings"), settingsPane); + tabbedPane.addTab(MessageManager.getString("label.das_settings"), dasSettingsPane); bigPanel.add(transPanel, java.awt.BorderLayout.SOUTH); transbuttons.add(optimizeOrder); transbuttons.add(invert); @@ -1180,7 +1258,9 @@ public class FeatureSettings extends JPanel if (!valid) { return null; - } else { + } + else + { gps = new String[_gps.size()]; _gps.toArray(gps); } @@ -1338,10 +1418,15 @@ public class FeatureSettings extends JPanel public void noDasSourceActive() { complete(); - JOptionPane.showInternalConfirmDialog(Desktop.desktop, - MessageManager.getString("label.no_das_sources_selected_warn"), - MessageManager.getString("label.no_das_sources_selected_title"), JOptionPane.DEFAULT_OPTION, - JOptionPane.INFORMATION_MESSAGE); + JOptionPane + .showInternalConfirmDialog( + Desktop.desktop, + MessageManager + .getString("label.no_das_sources_selected_warn"), + MessageManager + .getString("label.no_das_sources_selected_title"), + JOptionPane.DEFAULT_OPTION, + JOptionPane.INFORMATION_MESSAGE); } // /////////////////////////////////////////////////////////////////////// @@ -1355,7 +1440,7 @@ public class FeatureSettings extends JPanel } private String[] columnNames = - { "Feature Type", "Colour", "Display" }; + { MessageManager.getString("label.feature_type"), MessageManager.getString("action.colour"), MessageManager.getString("label.display") }; private Object[][] data;