*/
package jalview.gui;
+import jalview.api.AlignViewControllerGuiI;
import jalview.api.AlignViewportI;
import jalview.api.FeatureColourI;
import jalview.api.FeatureSettingsControllerI;
+import jalview.api.SplitContainerI;
import jalview.api.ViewStyleI;
+import jalview.controller.FeatureSettingsControllerGuiI;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.SequenceI;
import jalview.datamodel.features.FeatureMatcher;
import javax.xml.stream.XMLStreamReader;
public class FeatureSettings extends JPanel
- implements FeatureSettingsControllerI
+ implements FeatureSettingsControllerI, FeatureSettingsControllerGuiI
{
private static final String SEQUENCE_FEATURE_COLOURS = MessageManager
.getString("label.sequence_feature_colours");
@Override
public void mousePressed(MouseEvent evt)
{
- selectedRow = table.rowAtPoint(evt.getPoint());
+ Point pt = evt.getPoint();
+ selectedRow = table.rowAtPoint(pt);
String type = (String) table.getValueAt(selectedRow, TYPE_COLUMN);
if (evt.isPopupTrigger())
{
popupSort(selectedRow, type, colour, fr.getMinMax(), evt.getX(),
evt.getY());
}
- else if (evt.getClickCount() == 2)
+ else if (evt.getClickCount() == 2
+ && table.columnAtPoint(pt) == TYPE_COLUMN)
{
boolean invertSelection = evt.isAltDown();
boolean toggleSelection = Platform.isControlDown(evt);
}
discoverAllFeatureData();
- final PropertyChangeListener change;
final FeatureSettings fs = this;
fr.addPropertyChangeListener(change = new PropertyChangeListener()
{
}
});
-
- frame = new JInternalFrame();
- frame.setContentPane(this);
- if (Platform.isAMac())
+ SplitContainerI splitframe = af.getSplitViewContainer();
+ if (splitframe != null)
{
- Desktop.addInternalFrame(frame,
- MessageManager.getString("label.sequence_feature_settings"),
- 600, 480);
+ frame = null; // keeps eclipse happy
+ splitframe.addFeatureSettingsUI(this);
}
else
{
- Desktop.addInternalFrame(frame,
- MessageManager.getString("label.sequence_feature_settings"),
- 600, 450);
- }
- frame.setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGHT));
+ frame = new JInternalFrame();
+ frame.setContentPane(this);
+ Rectangle bounds = af.getFeatureSettingsGeometry();
+ String title;
+ if (af.getAlignPanels().size() > 1 || Desktop.getAlignmentPanels(
+ af.alignPanel.av.getSequenceSetId()).length > 1)
+ {
+ title = MessageManager.formatMessage(
+ "label.sequence_feature_settings_for_view",
+ af.alignPanel.getViewName());
+ }
+ else
+ {
+ title = MessageManager.getString("label.sequence_feature_settings");
+ }
+ if (bounds == null)
+ {
+ if (Platform.isAMac())
+ {
+ Desktop.addInternalFrame(frame, title, 600, 480);
+ }
+ else
+ {
+ Desktop.addInternalFrame(frame, title, 600, 450);
+ }
+ }
+ else
+ {
+ Desktop.addInternalFrame(frame, title,
+ false, bounds.width, bounds.height);
+ frame.setBounds(bounds);
+ frame.setVisible(true);
+ }
+ frame.setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGHT));
- frame.addInternalFrameListener(
- new javax.swing.event.InternalFrameAdapter()
- {
- @Override
- public void internalFrameClosed(
- javax.swing.event.InternalFrameEvent evt)
+ frame.addInternalFrameListener(
+ new javax.swing.event.InternalFrameAdapter()
{
- fr.removePropertyChangeListener(change);
- };
- });
- frame.setLayer(JLayeredPane.PALETTE_LAYER);
+ @Override
+ public void internalFrameClosed(
+ javax.swing.event.InternalFrameEvent evt)
+ {
+ featureSettings_isClosed();
+ };
+ });
+ frame.setLayer(JLayeredPane.PALETTE_LAYER);
+ }
inConstruction = false;
}
+ PropertyChangeListener change;
+
+ @Override
+ public AlignViewControllerGuiI getAlignframe()
+ {
+ return af;
+ }
+
+ @Override
+ public void featureSettings_isClosed()
+ {
+ fr.removePropertyChangeListener(change);
+ change = null;
+ }
+
protected void popupSort(final int rowSelected, final String type,
final Object typeCol, final Map<String, float[][]> minmax, int x,
int y)
{
try
{
- frame.setClosed(true);
+ if (frame != null)
+ {
+ af.setFeatureSettingsGeometry(frame.getBounds());
+ frame.setClosed(true);
+ }
+ else
+ {
+ SplitContainerI sc = af.getSplitViewContainer();
+ sc.closeFeatureSettings(this, closeContainingFrame);
+ af.featureSettings = null;
+ }
} catch (Exception exe)
{
}
refreshDisplay();
}
});
-
+ // JButton viewComplementSettings = new JButton(MessageManager
+ // .formatMessage("label.show_linked_feature_settings",
+ // nucleotide
+ // ? MessageManager.getString("label.protein")
+ // .toLowerCase()
+ // : "CDS"));
+ // viewComplementSettings.addActionListener(new ActionListener()
+ // {
+ //
+ // @Override
+ // public void actionPerformed(ActionEvent e)
+ // {
+ // AlignViewControllerGuiI complAf = af.getSplitViewContainer()
+ // .getComplementAlignFrame(af);
+ // FeatureSettings complFeatureSettings = (FeatureSettings) complAf
+ // .getFeatureSettingsUI();
+ // if (complFeatureSettings != null)
+ // {
+ // complFeatureSettings.frame.setVisible(true);
+ // try
+ // {
+ // complFeatureSettings.frame.setSelected(true);
+ // return;
+ // } catch (Exception q)
+ // {
+ // }
+ // }
+ // {
+ // complAf.showFeatureSettingsUI();
+ // }
+ // }
+ // });
JPanel lowerPanel = new JPanel(new GridLayout(1, 2));
bigPanel.add(lowerPanel, BorderLayout.SOUTH);
boolean hasComplement = af.getViewport().getCodingComplement() != null;
JPanel transPanelLeft = new JPanel(
- new GridLayout(hasComplement ? 3 : 2, 1));
+ new GridLayout(hasComplement ? 4 : 2, 1));
transPanelLeft.add(new JLabel(" Colour transparency" + ":"));
transPanelLeft.add(transparency);
if (hasComplement)