import java.awt.event.*;
import javax.swing.*;
+import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkListener;
/**
* DOCUMENT ME!
* @author $author$
* @version $Revision$
*/
-public class SplashScreen extends JPanel implements Runnable
+public class SplashScreen extends JPanel implements Runnable, HyperlinkListener
{
boolean visible = true;
*/
public SplashScreen()
{
+ this(false);
+ }
+ private boolean interactiveDialog=false;
+ /**
+ *
+ * @param interactive if true - an internal dialog is opened rather than a free-floating splash screen
+ */
+ public SplashScreen(boolean interactive)
+ {
+ this.interactiveDialog=interactive;
+ // show a splashscreen that will disapper
Thread t = new Thread(this);
t.start();
}
+
MouseAdapter closer = new MouseAdapter()
{
public void mousePressed(MouseEvent evt)
{
try
{
- visible = false;
- closeSplash();
+ if (!interactiveDialog)
+ {
+ visible = false;
+ closeSplash();
+ }
} catch (Exception ex)
{
}
addMouseListener(closer);
try
{
- java.net.URL url = getClass().getResource("/images/logo.gif");
+ java.net.URL url = getClass().getResource("/images/Jalviewlogo.png");
if (url != null)
{
iframe = new JInternalFrame();
iframe.setFrameIcon(null);
- iframe.setClosable(false);
+ iframe.setClosable(interactiveDialog);
this.setLayout(new BorderLayout());
iframe.setContentPane(this);
iframe.setLayer(JLayeredPane.PALETTE_LAYER);
Desktop.desktop.add(iframe);
SplashImage splashimg = new SplashImage(image);
iconimg.add(splashimg, BorderLayout.CENTER);
- add(iconimg, BorderLayout.WEST);
+ add(iconimg, BorderLayout.NORTH);
add(authlist, BorderLayout.CENTER);
authlist.setEditable(false);
authlist.addMouseListener(closer);
refreshText();
- iframe.setVisible(true);
- iframe.setBounds((int) ((Desktop.instance.getWidth() - 750) / 2),
- (int) ((Desktop.instance.getHeight() - 160) / 2), 750,
- iframe.getPreferredSize().height);
-
}
long oldtext = -1;
protected boolean refreshText()
{
String newtext = Desktop.instance.getAboutMessage(true).toString();
- if (oldtext != newtext.hashCode())
+ //System.err.println("Text found: \n"+newtext+"\nEnd of newtext.");
+ if (oldtext != newtext.length())
{
- oldtext = newtext.hashCode();
+ iframe.setVisible(false);
+ oldtext = newtext.length();
+ authlist=new JTextPane();
+ authlist.setEditable(false);
+ authlist.addMouseListener(closer);
+ authlist.addHyperlinkListener(this);
authlist.setContentType("text/html");
authlist.setText(newtext);
+ authlist.setVisible(true);
+ add(authlist, BorderLayout.CENTER);
+ iframe.setBounds((int) ((Desktop.instance.getWidth() - 750) / 2),
+ (int) ((Desktop.instance.getHeight() - 160) / 2), 750,
+ iframe.getPreferredSize().height);
+ //System.err.println("New preferred size: "+iframe.getPreferredSize().height);
+ iframe.validate();
+ iframe.setVisible(true);
+
return true;
}
return false;
while (visible)
{
+ iframe.repaint();
try
{
- Thread.sleep(1000);
+ Thread.sleep(500);
} catch (Exception ex)
{
}
-
- if (((System.currentTimeMillis() / 1000) - startTime) > 5)
+
+ if (!interactiveDialog && ((System.currentTimeMillis() / 1000) - startTime) > 5)
{
visible = false;
}
- else
+
+ if (visible && refreshText())
{
- if (refreshText())
- {
- repaint();
- }
+// if (interactiveDialog) {
+ iframe.repaint();
+// } else {
+// iframe.repaint();
+// };
+ }
+ if (interactiveDialog)
+ {
+ return;
}
}
if (image != null)
{
- g.drawImage(image, 4, (getHeight() - image.getHeight(this)) / 2,
+ g.drawImage(image, (getWidth() - image.getWidth(this)) / 2, (getHeight() - image.getHeight(this)) / 2,
this);
}
}
* += fontSize + 4); }
*/
}
+ @Override
+ public void hyperlinkUpdate(HyperlinkEvent e)
+ {
+ Desktop.hyperlinkUpdate(e);
+
+ }
}
\ No newline at end of file