import jalview.schemes.*;
import java.awt.Dimension;
-public class FeatureColourChooser extends JPanel
+public class FeatureColourChooser extends JalviewDialog
{
- JDialog frame;
-
// FeatureSettings fs;
FeatureRenderer fr;
this.fr = frender;
this.type = type;
ap = fr.ap;
- frame = new JDialog(Desktop.instance, true);
- frame.setTitle("Graduated Feature Colour for " + type);
- Rectangle deskr = Desktop.instance.getBounds();
- frame.setBounds(new Rectangle((int) (deskr.getCenterX() - 240),
- (int) (deskr.getCenterY() - 92), 480, 185));
- frame.setContentPane(this);
+ initDialogFrame(this,true, block,"Graduated Feature Colour for " + type, 480, 185);
// frame.setLayer(JLayeredPane.PALETTE_LAYER);
// Desktop.addInternalFrame(frame, "Graduated Feature Colour for "+type,
// 480, 145);
adjusting = false;
changeColour();
- if (!block)
- {
- new Thread(new Runnable()
- {
-
- public void run()
- {
- frame.show();
- }
-
- }).start();
- }
- else
- {
- frame.show();
- }
+ waitForInput();
}
public FeatureColourChooser()
minText.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
maxText.setText("Max:");
maxText.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
- ok.setOpaque(false);
- ok.setText("OK");
- ok.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- ok_actionPerformed(e);
- }
- });
- cancel.setOpaque(false);
- cancel.setText("Cancel");
- cancel.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- cancel_actionPerformed(e);
- }
- });
this.setLayout(borderLayout1);
jPanel2.setLayout(flowLayout1);
jPanel1.setBackground(Color.white);
JPanel maxColour = new JPanel();
- JButton ok = new JButton();
-
- JButton cancel = new JButton();
-
JPanel colourPanel = new JPanel();
JPanel jPanel1 = new JPanel();
ap.paintAlignment(false);
}
- private void raiseClosed()
+ protected void raiseClosed()
{
if (this.colourEditor != null)
{
}
}
- public void ok_actionPerformed(ActionEvent e)
+ public void okPressed()
{
changeColour();
- try
- {
- frame.dispose();
- raiseClosed();
- } catch (Exception ex)
- {
- }
}
- public void cancel_actionPerformed(ActionEvent e)
+
+ public void cancelPressed()
{
reset();
- try
- {
- frame.dispose();
- // frame.setClosed(true);
- raiseClosed();
- } catch (Exception ex)
- {
- }
}
void reset()
--- /dev/null
+package jalview.gui;
+
+import java.awt.Container;
+import java.awt.Rectangle;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JPanel;
+
+/**
+ * Boilerplate dialog class. Implements basic functionality necessary for model blocking/non-blocking dialogs
+ * with an OK and Cancel button ready to add to the content pane.
+ * @author jimp
+ *
+ */
+public abstract class JalviewDialog extends JPanel
+{
+
+ protected JDialog frame;
+ protected JButton ok = new JButton();
+ protected JButton cancel = new JButton();
+ boolean block=false;
+
+ public void waitForInput()
+ {
+ if (!block)
+ {
+ new Thread(new Runnable()
+ {
+
+ public void run()
+ {
+ frame.show();
+ }
+
+ }).start();
+ }
+ else
+ {
+ frame.show();
+ }
+ }
+
+ protected void initDialogFrame(Container content,
+ boolean modal, boolean block, String title, int width, int height)
+ {
+
+ frame = new JDialog(Desktop.instance, true);
+ frame.setTitle(title);
+ if (Desktop.instance!=null)
+ {
+ Rectangle deskr = Desktop.instance.getBounds();
+ frame.setBounds(new Rectangle((int) (deskr.getCenterX() - width/2),
+ (int) (deskr.getCenterY() - height/2), width, height));
+ } else {
+ frame.setSize(width,height);
+ }
+ frame.setContentPane(content);
+ this.block = block;
+
+ ok.setOpaque(false);
+ ok.setText("OK");
+ ok.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ okPressed();
+ closeDialog();
+ }
+ });
+ cancel.setOpaque(false);
+ cancel.setText("Cancel");
+ cancel.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ cancelPressed();
+ closeDialog();
+ }
+ });
+
+ }
+ /**
+ * clean up and raise the 'dialog closed' event by calling raiseClosed
+ */
+ protected void closeDialog()
+ {
+ try
+ {
+ frame.dispose();
+ raiseClosed();
+ } catch (Exception ex)
+ {
+ }
+ }
+
+ protected abstract void raiseClosed();
+ protected abstract void okPressed();
+ protected abstract void cancelPressed();
+
+}