/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
*/
package jalview.gui;
-import java.util.*;
+import jalview.jbgui.GWebserviceInfo;
+import jalview.util.MessageManager;
+import jalview.ws.WSClientI;
-import java.awt.*;
-import java.awt.event.*;
-import java.awt.image.*;
-import javax.swing.*;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.GridLayout;
+import java.awt.Image;
+import java.awt.MediaTracker;
+import java.awt.event.ActionEvent;
+import java.awt.image.BufferedImage;
+import java.util.Vector;
+
+import javax.swing.JComponent;
+import javax.swing.JEditorPane;
+import javax.swing.JInternalFrame;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
+import javax.swing.JTextArea;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.StyleSheet;
-import jalview.jbgui.*;
-import jalview.util.MessageManager;
-import jalview.ws.WSClientI;
-
/**
* Base class for web service client thread and gui TODO: create StAX parser to
* extract html body content reliably when preparing html formatted job statuses
* @author $author$
* @version $Revision$
*/
-public class WebserviceInfo extends GWebserviceInfo implements
- HyperlinkListener, IProgressIndicator
+public class WebserviceInfo extends GWebserviceInfo
+ implements HyperlinkListener, IProgressIndicator
{
/** Job is Queued */
JInternalFrame frame;
+ private IProgressIndicator progressBar;
+
+ @Override
+ public void setVisible(boolean aFlag)
+ {
+ super.setVisible(aFlag);
+ frame.setVisible(aFlag);
+ };
+
JTabbedPane subjobs = null;
java.util.Vector jobPanes = null;
* short name and job type
* @param info
* reference or other human readable description
+ * @param makeVisible
+ * true to display the webservices window immediatly (otherwise need
+ * to call setVisible(true))
*/
- public WebserviceInfo(String title, String info)
+ public WebserviceInfo(String title, String info, boolean makeVisible)
{
- init(title, info, 520, 500);
+ init(title, info, 520, 500, makeVisible);
}
/**
* @param height
* DOCUMENT ME!
*/
- public WebserviceInfo(String title, String info, int width, int height)
+ public WebserviceInfo(String title, String info, int width, int height,
+ boolean makeVisible)
{
- init(title, info, width, height);
+ init(title, info, width, height, makeVisible);
}
/**
* @param height
* DOCUMENT ME!
*/
- void init(String title, String info, int width, int height)
+ void init(String title, String info, int width, int height,
+ boolean makeVisible)
{
frame = new JInternalFrame();
frame.setContentPane(this);
- Desktop.addInternalFrame(frame, title, width, height);
+ Desktop.addInternalFrame(frame, title, makeVisible, width, height);
frame.setClosable(false);
+ progressBar = new ProgressBar(statusPanel, statusBar);
+
this.title = title;
setInfoText(info);
- java.net.URL url = getClass().getResource(
- "/images/Jalview_Logo_small.png");
+ java.net.URL url = getClass()
+ .getResource("/images/Jalview_Logo_small.png");
image = java.awt.Toolkit.getDefaultToolkit().createImage(url);
MediaTracker mt = new MediaTracker(this);
Thread thread = new Thread(ap);
thread.start();
final WebserviceInfo thisinfo = this;
- frame.addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
- {
- public void internalFrameClosed(
- javax.swing.event.InternalFrameEvent evt)
- {
- // System.out.println("Shutting down webservice client");
- WSClientI service = thisinfo.getthisService();
- if (service != null && service.isCancellable())
- {
- service.cancelJob();
- }
- };
- });
+ frame.addInternalFrameListener(
+ new javax.swing.event.InternalFrameAdapter()
+ {
+ public void internalFrameClosed(
+ javax.swing.event.InternalFrameEvent evt)
+ {
+ // System.out.println("Shutting down webservice client");
+ WSClientI service = thisinfo.getthisService();
+ if (service != null && service.isCancellable())
+ {
+ service.cancelJob();
+ }
+ };
+ });
frame.validate();
}
{
if (jobpane < 0 || jobpane >= jobPanes.size())
{
- throw new Error("setStatus called for non-existent job pane."
- + jobpane);
+ throw new Error(MessageManager.formatMessage(
+ "error.setstatus_called_non_existent_job_pane", new String[]
+ { Integer.valueOf(jobpane).toString() }));
}
switch (status)
{
int htmlpos = leaveFirst ? -1 : lowertxt.indexOf("<body");
int htmlend = leaveLast ? -1 : lowertxt.indexOf("</body");
- int htmlpose = lowertxt.indexOf(">", htmlpos), htmlende = lowertxt
- .indexOf(">", htmlend);
+ int htmlpose = lowertxt.indexOf(">", htmlpos),
+ htmlende = lowertxt.indexOf(">", htmlend);
if (htmlend == -1 && htmlpos == -1)
{
return text;
}
if (text.indexOf("<meta") > -1)
{
- System.err.println("HTML COntent: \n" + text
- + "<< END HTML CONTENT\n");
+ System.err
+ .println("HTML COntent: \n" + text + "<< END HTML CONTENT\n");
}
return text;
{
String txt = getHtmlFragment(
((JEditorPane) ((JScrollPane) jobPanes.get(which))
- .getViewport().getComponent(0)).getText(), true,
- false);
+ .getViewport().getComponent(0)).getText(),
+ true, false);
((JEditorPane) ((JScrollPane) jobPanes.get(which)).getViewport()
- .getComponent(0)).setText(ensureHtmlTagged(txt
- + getHtmlFragment(text, false, true)));
+ .getComponent(0))
+ .setText(ensureHtmlTagged(
+ txt + getHtmlFragment(text, false, true)));
}
else
{
// anyhow - it has to stop threads and clean up
// JBPNote : TODO: Instead of a warning, we should have an optional 'Are
// you sure?' prompt
- warnUser("This job cannot be cancelled.\nJust close the window.",
- "Cancel job");
+ warnUser(
+ MessageManager.getString(
+ "warn.job_cannot_be_cancelled_close_window"),
+ MessageManager.getString("action.cancel_job"));
}
else
{
{
public void run()
{
- JOptionPane.showInternalMessageDialog(Desktop.desktop, message,
- title, JOptionPane.WARNING_MESSAGE);
+ JvOptionPane.showInternalMessageDialog(Desktop.desktop, message,
+ title, JvOptionPane.WARNING_MESSAGE);
}
});
{
Thread.sleep(50);
- int units = (int) ((System.currentTimeMillis() - startTime) / 10f);
+ int units = (int) ((System.currentTimeMillis() - startTime)
+ / 10f);
angle += units;
angle %= 360;
startTime = System.currentTimeMillis();
switch (currentStatus)
{
case STATE_QUEUING:
- g.drawString(title.concat(" - ").concat(MessageManager.getString("label.state_queueing")), 60, 30);
+ g.drawString(
+ title.concat(" - ").concat(
+ MessageManager.getString("label.state_queueing")),
+ 60, 30);
break;
case STATE_RUNNING:
- g.drawString(title.concat(" - ").concat(MessageManager.getString("label.state_running")), 60, 30);
+ g.drawString(
+ title.concat(" - ").concat(
+ MessageManager.getString("label.state_running")),
+ 60, 30);
break;
case STATE_STOPPED_OK:
- g.drawString(title.concat(" - ").concat(MessageManager.getString("label.state_completed")), 60, 30);
+ g.drawString(
+ title.concat(" - ").concat(
+ MessageManager.getString("label.state_completed")),
+ 60, 30);
break;
case STATE_CANCELLED_OK:
- g.drawString(title.concat(" - ").concat(MessageManager.getString("label.state_job_cancelled")), 60, 30);
+ g.drawString(
+ title.concat(" - ")
+ .concat(MessageManager
+ .getString("label.state_job_cancelled")),
+ 60, 30);
break;
case STATE_STOPPED_ERROR:
- g.drawString(title.concat(" - ").concat(MessageManager.getString("label.state_job_error")), 60, 30);
+ g.drawString(
+ title.concat(" - ").concat(
+ MessageManager.getString("label.state_job_error")),
+ 60, 30);
break;
case STATE_STOPPED_SERVERERROR:
- g.drawString(title.concat(" - ").concat(MessageManager.getString("label.server_error_try_later")), 60, 30);
+ g.drawString(
+ title.concat(" - ")
+ .concat(MessageManager
+ .getString("label.server_error_try_later")),
+ 60, 30);
break;
}
Desktop.hyperlinkUpdate(e);
}
- // methods for implementing IProgressIndicator
- // need to refactor to a reusable stub class
- Hashtable progressBars, progressBarHandlers;
-
/*
* (non-Javadoc)
*
@Override
public void setProgressBar(String message, long id)
{
- if (progressBars == null)
- {
- progressBars = new Hashtable();
- progressBarHandlers = new Hashtable();
- }
-
- JPanel progressPanel;
- Long lId = new Long(id);
- GridLayout layout = (GridLayout) statusPanel.getLayout();
- if (progressBars.get(lId) != null)
- {
- progressPanel = (JPanel) progressBars.get(new Long(id));
- statusPanel.remove(progressPanel);
- progressBars.remove(lId);
- progressPanel = null;
- if (message != null)
- {
- statusBar.setText(message);
- }
- if (progressBarHandlers.contains(lId))
- {
- progressBarHandlers.remove(lId);
- }
- layout.setRows(layout.getRows() - 1);
- }
- else
- {
- progressPanel = new JPanel(new BorderLayout(10, 5));
-
- JProgressBar progressBar = new JProgressBar();
- progressBar.setIndeterminate(true);
-
- progressPanel.add(new JLabel(message), BorderLayout.WEST);
- progressPanel.add(progressBar, BorderLayout.CENTER);
-
- layout.setRows(layout.getRows() + 1);
- statusPanel.add(progressPanel);
-
- progressBars.put(lId, progressPanel);
- }
- // update GUI
- // setMenusForViewport();
- validate();
+ progressBar.setProgressBar(message, id);
}
@Override
public void registerHandler(final long id,
final IProgressIndicatorHandler handler)
{
- if (progressBarHandlers == null || !progressBars.contains(new Long(id)))
- {
- throw new Error(
- "call setProgressBar before registering the progress bar's handler.");
- }
- progressBarHandlers.put(new Long(id), handler);
- final JPanel progressPanel = (JPanel) progressBars.get(new Long(id));
- if (handler.canCancel())
- {
- JButton cancel = new JButton(MessageManager.getString("action.cancel"));
- final IProgressIndicator us = this;
- cancel.addActionListener(new ActionListener()
- {
-
- @Override
- public void actionPerformed(ActionEvent e)
- {
- handler.cancelActivity(id);
- us.setProgressBar(
- "Cancelled "
- + ((JLabel) progressPanel.getComponent(0))
- .getText(), id);
- }
- });
- progressPanel.add(cancel, BorderLayout.EAST);
- }
+ progressBar.registerHandler(id, handler);
}
/**
@Override
public boolean operationInProgress()
{
- if (progressBars != null && progressBars.size() > 0)
- {
- return true;
- }
- return false;
+ return progressBar.operationInProgress();
}
}