setBounds(xPos, yPos, 900, 650);
}
+ getIdentifiersOrgData();
+
if (!Platform.isJS())
/**
* Java only
experimentalFeatures.setSelected(showExperimental());
- getIdentifiersOrgData();
+ if (Jalview.isInteractive())
+ {
+ // disabled for SeqCanvasTest
+ checkURLLinks();
- checkURLLinks();
+ checkURLLinks();
- // Spawn a thread that shows the splashscreen
+ // Spawn a thread that shows the splashscreen
- SwingUtilities.invokeLater(new Runnable()
- {
- @Override
- public void run()
+ SwingUtilities.invokeLater(new Runnable()
{
- new SplashScreen(true);
- }
- });
+ @Override
+ public void run()
+ {
+ new SplashScreen(true);
+ }
+ });
- // Thread off a new instance of the file chooser - this reduces the time
- // it
- // takes to open it later on.
- new Thread(new Runnable()
- {
- @Override
- public void run()
+ // Thread off a new instance of the file chooser - this reduces the
+ // time
+ // it
+ // takes to open it later on.
+ new Thread(new Runnable()
{
- Cache.log.debug("Filechooser init thread started.");
- String fileFormat = Cache.getProperty("DEFAULT_FILE_FORMAT");
- JalviewFileChooser.forRead(Cache.getProperty("LAST_DIRECTORY"),
- fileFormat);
- Cache.log.debug("Filechooser init thread finished.");
- }
- }).start();
- // Add the service change listener
- changeSupport.addJalviewPropertyChangeListener("services",
- new PropertyChangeListener()
- {
-
- @Override
- public void propertyChange(PropertyChangeEvent evt)
+ @Override
+ public void run()
+ {
+ Cache.log.debug("Filechooser init thread started.");
+ String fileFormat = Cache.getProperty("DEFAULT_FILE_FORMAT");
+ JalviewFileChooser.forRead(
+ Cache.getProperty("LAST_DIRECTORY"), fileFormat);
+ Cache.log.debug("Filechooser init thread finished.");
+ }
+ }).start();
+ // Add the service change listener
+ changeSupport.addJalviewPropertyChangeListener("services",
+ new PropertyChangeListener()
{
- Cache.log.debug("Firing service changed event for "
- + evt.getNewValue());
- JalviewServicesChanged(evt);
- }
- });
- }
+ @Override
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ Cache.log.debug("Firing service changed event for "
+ + evt.getNewValue());
+ JalviewServicesChanged(evt);
+ }
+ });
+ }
+ }
this.setDropTarget(new java.awt.dnd.DropTarget(desktopPane, this));
this.addWindowListener(new WindowAdapter()
public void run()
{
long now = System.currentTimeMillis();
- setProgressBar(
- MessageManager.getString("status.refreshing_news"), now);
+ setProgressBar(MessageManager.getString("status.refreshing_news"),
+ now);
jvnews.refreshNews();
setProgressBar(null, now);
jvnews.showNews();
}
}
+// /**
+// * Add an internal frame to the Jalview desktop that is allowed to be resized,
+// * has a minimum size of 300px and might or might not be visible
+// *
+// * @param frame
+// * Frame to show
+// * @param title
+// * Visible Title
+// * @param makeVisible
+// * When true, display frame immediately, otherwise, caller must call
+// * setVisible themselves.
+// * @param w
+// * width
+// * @param h
+// * height
+// */
+// @Deprecated
+// public static synchronized void addInternalFrame(
+// final JInternalFrame frame, String title, boolean makeVisible,
+// int w, int h)
+// {
+// // textbox, web services, sequenceFetcher, featureSettings
+// getInstance().addFrame(frame, title, makeVisible, w, h,
+// FRAME_ALLOW_RESIZE, FRAME_SET_MIN_SIZE_300);
+// }
+//
+// /**
+// * Add an internal frame to the Jalview desktop that is visible, has a minimum
+// * size of 300px, and may or may not be resizable
+// *
+// * @param frame
+// * Frame to show
+// * @param title
+// * Visible Title
+// * @param w
+// * width
+// * @param h
+// * height
+// * @param resizable
+// * Allow resize
+// */
+// @Deprecated
+// public static synchronized void addInternalFrame(
+// final JInternalFrame frame, String title, int w, int h,
+// boolean resizable)
+// {
+// // annotation, font, calculation, user-defined colors
+// getInstance().addFrame(frame, title, FRAME_MAKE_VISIBLE, w, h,
+// resizable, FRAME_SET_MIN_SIZE_300);
+// }
+
/**
- * Adds and opens the given frame to the desktop
+ * Adds and opens the given frame to the desktop that is visible, allowed to
+ * resize, and has a 300px minimum width.
*
* @param frame
* Frame to show
public static synchronized void addInternalFrame(
final JInternalFrame frame, String title, int w, int h)
{
- addInternalFrame(frame, title, true, w, h, true, false);
- }
+ // 58 classes
+
+ setFrame(frame, title, w, h);
- /**
- * Add an internal frame to the Jalview desktop
- *
- * @param frame
- * Frame to show
- * @param title
- * Visible Title
- * @param makeVisible
- * When true, display frame immediately, otherwise, caller must call
- * setVisible themselves.
- * @param w
- * width
- * @param h
- * height
- */
- public static synchronized void addInternalFrame(
- final JInternalFrame frame, String title, boolean makeVisible,
- int w, int h)
- {
- addInternalFrame(frame, title, makeVisible, w, h, true, false);
- }
+ // Headless operation has no Desktop instance, only the static class.
- /**
- * Add an internal frame to the Jalview desktop and make it visible
- *
- * @param frame
- * Frame to show
- * @param title
- * Visible Title
- * @param w
- * width
- * @param h
- * height
- * @param resizable
- * Allow resize
- */
- public static synchronized void addInternalFrame(
- final JInternalFrame frame, String title, int w, int h,
- boolean resizable)
- {
- addInternalFrame(frame, title, true, w, h, resizable, false);
+ if (getInstance() != null)
+ getInstance().addFrame(frame, Desktop.FRAME_MAKE_VISIBLE,
+ FRAME_ALLOW_RESIZE, FRAME_SET_MIN_SIZE_300);
}
/**
- * Add an internal frame to the Jalview desktop
+ * Add an internal frame to the Jalview desktop that may optionally be
+ * visible, resizable, and allowed to be any size
*
* @param frame
* Frame to show
final JInternalFrame frame, String title, boolean makeVisible,
int w, int h, boolean resizable, boolean ignoreMinSize)
{
-
- getInstance().addFrame(frame, title, makeVisible, w, h, resizable, ignoreMinSize);
+ // 15 classes
+ setFrame(frame, title, w, h);
+
+ if (getInstance() != null)
+ getInstance().addFrame(frame, makeVisible, resizable,
+ ignoreMinSize);
}
+
+ // These can now by put into a single int flag, if desired:
- private void addFrame(JInternalFrame frame, String title,
- boolean makeVisible, int w, int h, boolean resizable,
- boolean ignoreMinSize)
+ public final static boolean FRAME_MAKE_VISIBLE = true;
+
+ public final static boolean FRAME_NOT_VISIBLE = false;
+
+ public final static boolean FRAME_ALLOW_RESIZE = true;
+
+ public final static boolean FRAME_NOT_RESIZABLE = false;
+
+ public final static boolean FRAME_ALLOW_ANY_SIZE = true;
+
+ public final static boolean FRAME_SET_MIN_SIZE_300 = false;
+
+ private static void setFrame(JInternalFrame frame, String title,
+ int w, int h)
{
- // TODO: allow callers to determine X and Y position of frame (eg. via
- // bounds object).
- // TODO: consider fixing method to update entries in the window submenu with
- // the current window title
+ // TODO: allow callers to determine X and Y position of frame (eg. via
+ // bounds object).
+ // TODO: consider fixing method to update entries in the window submenu with
+ // the current window title
- frame.setTitle(title);
- if (frame.getWidth() < 1 || frame.getHeight() < 1)
+ frame.setTitle(title);
+ if (frame.getWidth() < 1 || frame.getHeight() < 1)
{
frame.setSize(w, h);
}
- // THIS IS A PUBLIC STATIC METHOD, SO IT MAY BE CALLED EVEN IN
- // A HEADLESS STATE WHEN NO DESKTOP EXISTS. MUST RETURN
- // IF JALVIEW IS RUNNING HEADLESS
- // ///////////////////////////////////////////////
- if (Jalview.isHeadlessMode())
- {
- return;
- }
+ }
+
+ private void addFrame(JInternalFrame frame,
+ boolean makeVisible, boolean resizable,
+ boolean ignoreMinSize)
+ {
openFrameCount++;
-
+
+ boolean isEmbedded = (Platform.getEmbeddedAttribute(frame, "id") != null);
+ boolean hasEmbeddedSize = (Platform.getDimIfEmbedded(frame, -1, -1) != null);
+ // Web page embedding allows us to ignore minimum size
+ ignoreMinSize |= hasEmbeddedSize;
+
if (!ignoreMinSize)
{
- frame.setMinimumSize(
- new Dimension(DEFAULT_MIN_WIDTH, DEFAULT_MIN_HEIGHT));
-
// Set default dimension for Alignment Frame window.
// The Alignment Frame window could be added from a number of places,
// hence,
{
frame.setMinimumSize(new Dimension(ALIGN_FRAME_DEFAULT_MIN_WIDTH,
ALIGN_FRAME_DEFAULT_MIN_HEIGHT));
+ } else {
+ frame.setMinimumSize(
+ new Dimension(DEFAULT_MIN_WIDTH, DEFAULT_MIN_HEIGHT));
+
}
}
frame.setMaximizable(resizable);
frame.setIconifiable(resizable);
frame.setOpaque(Platform.isJS());
- boolean isEmbedded = (Platform.getDimIfEmbedded(frame, -1, -1) != null);
if (!isEmbedded && frame.getX() < 1 && frame.getY() < 1)
{
frame.setLocation(xOffset * openFrameCount,
* add an entry for the new frame in the Window menu
* (and remove it when the frame is closed)
*/
- final JMenuItem menuItem = new JMenuItem(title);
+ final JMenuItem menuItem = new JMenuItem(frame.getTitle());
frame.addInternalFrameListener(new InternalFrameAdapter()
{
@Override
public void internalFrameActivated(InternalFrameEvent evt)
{
JInternalFrame itf = getDesktopPane().getSelectedFrame();
- if (itf != null)
+ if (itf != null)
{
if (itf instanceof AlignFrame)
{
KeyStroke ctrlWKey = KeyStroke.getKeyStroke(KeyEvent.VK_W,
InputEvent.CTRL_DOWN_MASK);
KeyStroke cmdWKey = KeyStroke.getKeyStroke(KeyEvent.VK_W,
- ShortcutKeyMaskExWrapper.getMenuShortcutKeyMaskEx());
+ Platform.SHORTCUT_KEY_MASK);
InputMap inputMap = frame
.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
CutAndPasteTransfer cap = new CutAndPasteTransfer();
cap.setForInput(viewPanel);
addInternalFrame(cap,
- MessageManager.getString("label.cut_paste_alignmen_file"), true,
- 600, 500);
+ MessageManager.getString("label.cut_paste_alignmen_file"),
+ FRAME_MAKE_VISIBLE, 600, 500, FRAME_ALLOW_RESIZE,
+ FRAME_SET_MIN_SIZE_300);
}
/*
{
Cache.log.error(
"Problems whilst loading project from " + choice, ex);
- JvOptionPane.showMessageDialog( getDesktopPane(),
+ JvOptionPane.showMessageDialog(getDesktopPane(),
MessageManager.formatMessage(
"label.error_whilst_loading_project_from",
new Object[]
public static AlignmentViewport[] getViewports(String sequenceSetId)
{
List<AlignmentViewport> viewp = new ArrayList<>();
- if ( getDesktopPane() != null)
+ if (getDesktopPane() != null)
{
AlignFrame[] frames = getAlignFrames();
return new AlignFrame[] { Jalview.getInstance().currentAlignFrame };
}
- JInternalFrame[] frames = getDesktopPane().getAllFrames();
+ JInternalFrame[] frames = getDesktopPane().getAllFrames();
if (frames == null)
{
*/
protected void addQuitHandler()
{
- getRootPane()
- .getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
- KeyStroke
- .getKeyStroke(KeyEvent.VK_Q,
- jalview.util.ShortcutKeyMaskExWrapper
- .getMenuShortcutKeyMaskEx()),
+
+ getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
+ .put(KeyStroke.getKeyStroke(KeyEvent.VK_Q,
+ Platform.SHORTCUT_KEY_MASK),
"Quit");
getRootPane().getActionMap().put("Quit", new AbstractAction()
{
*/
public static AlignFrame getAlignFrameFor(AlignViewportI viewport)
{
- if ( getDesktopPane() != null)
+ if (getDesktopPane() != null)
{
AlignmentPanel[] aps = getAlignmentPanels(
viewport.getSequenceSetId());
jalview.util.BrowserLauncher.openURL(url);
} catch (Exception ex)
{
- JvOptionPane.showInternalMessageDialog( getDesktopPane(),
+ JvOptionPane.showInternalMessageDialog(getDesktopPane(),
MessageManager
.getString("label.web_browser_not_found_unix"),
MessageManager.getString("label.web_browser_not_found"),
{
return;
}
- try
+ try
{
SwingUtilities.invokeAndWait(prompter);
} catch (Exception q)