import java.awt.*; import java.awt.event.*; import java.io.* ; import java.util.*; /* Java 1.1+ GUI Application Slide-Show BrowserController 09/24/2001 M. Gallant */ public class pagelet extends Frame implements ActionListener, MouseListener { private Button b1,b2,b3,b4,b5,b6,b7,b8, b25 ; Label l1, l3, lslide, lpaused; TextField tf,ts; public Vector urllist; int pages=0; int currentpage=0; boolean paused=false; int interval=3000; showthread sht = new showthread(this, interval) ; boolean pausestatus = false; String[] headerfields = {" Web Pagelet ", "Version 1.0" , " for win32 platforms", " by M. Gallant 09/2001" } ; int headers = headerfields.length ; int headerindex = 0; String basecommand = "start " ; // default basecommand for Win95, 98 etc. public pagelet(String name) { super(name) ; if((System.getProperty("os.name").indexOf("NT")>=0) || (System.getProperty("os.name").equals("Windows 2000")) ) ; //for NT or 2000 platform basecommand = "cmd.exe /c start " ; // add other tests for other platform scripts Panel p = new Panel() ; p.setLayout(new GridLayout(5,2,10,10)) ; l1= new Label(headerfields[0],Label.CENTER) ; l1.setFont(new Font("TimesRoman", Font.BOLD, 15)) ; l1.addMouseListener(this) ; l1.setForeground(Color.yellow) ; l1.setBackground(Color.blue) ; l3 = new Label(" Stopped ") ; Label l4 = new Label("Time:", Label.RIGHT) ; lslide = new Label("Slide 0 of 0 ") ; lpaused = new Label("Not paused" ) ; tf = new TextField(String.valueOf(interval), 5) ; b1=new Button("Backward") ; b1.addActionListener(this) ; b2=new Button("Forward") ; b2.addActionListener(this) ; b3=new Button("First Page") ; b3.addActionListener(this) ; b4=new Button("Last Page") ; b4.addActionListener(this) ; b5=new Button("Load List") ; b5.addActionListener(this) ; b6=new Button("AutoShow") ; b6.addActionListener(this) ; b7=new Button("Show List") ; b7.addActionListener(this) ; b8=new Button("PauseShow") ; b8.addActionListener(this) ; b25=new Button("--- EXIT ---") ; b25.setBackground(Color.red); b25.addActionListener(this) ; p.add(b5); p.add(b7); p.add(b1); p.add(b2); p.add(b3); p.add(b4); p.add(b6); p.add(l3); p.add(b8); p.add(lpaused) ; p.validate(); Panel p2=new Panel() ; p2.add(p) ; add("Center", p2); p=new Panel(); p.setBackground(Color.blue) ; p.add(l1) ; p.addMouseListener(this) ; add("North",p) ; p=new Panel() ; p.setBackground(Color.lightGray) ; p.setLayout(new GridLayout(3,1)) ; p2 = new Panel() ; p2.add(l4) ; p2.add(tf) ; p.add(p2) ; p2 = new Panel() ; p2.add(lslide) ; p.add(p2) ; p2 = new Panel() ; p2.add(b25); p.add(p2); add("South",p) ; validate(); } public Insets getInsets() { return new Insets(24,5,5,5) ; } public void paint(Graphics g) { g.setColor(Color.black) ; g.fillRect(0,0,this.getSize().width, this.getSize().height) ; } public void mousePressed(MouseEvent e) { headerindex = ++headerindex % headers ; if(headerindex==0) l1.setFont(new Font("TimesRoman", Font.BOLD, 16)) ; else l1.setFont(new Font("TimesRoman", Font.PLAIN, 12)) ; l1.setText(headerfields[headerindex]) ; } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } public void actionPerformed(ActionEvent e) { if ((e.getActionCommand()).equals("Forward")){ if(pages>0){ currentpage = ++currentpage % pages ; lslide.setText("Slide " + currentpage +" of " + (pages-1)) ; loadWebPage((String)urllist.elementAt(currentpage)) ; } } else if ((e.getActionCommand()).equals("Backward")){ if(pages>0){ --currentpage; if(currentpage<0) currentpage=pages-1 ; //rotate to end lslide.setText("Slide " + currentpage +" of " + (pages-1)) ; loadWebPage((String)urllist.elementAt(currentpage)) ; } } else if((e.getActionCommand()).equals("First Page")){ if(pages>0){ loadWebPage((String)urllist.elementAt(0)) ; currentpage=0; lslide.setText("Slide " + 0 +" of " + (pages-1)) ; } } else if((e.getActionCommand()).equals("Last Page")){ if(pages>0){ loadWebPage((String)urllist.elementAt(pages-1)) ; currentpage = pages-1 ; lslide.setText("Slide " + (pages-1) +" of " + (pages-1)) ; } } else if((e.getActionCommand()).equals("AutoShow")){ if(!sht.isAlive()) { sht = new showthread(this,Integer.parseInt(tf.getText())) ; sht.start() ; l3.setText(" Started ...") ; } else{ sht.stop() ; l3.setText(" Stopped ") ; lpaused.setText("Not paused ") ; paused = false ; } } else if((e.getActionCommand()).equals("PauseShow")){ if(sht.isAlive()) if(!paused) { // if the AutoShow thread is running ... paused = true; lpaused.setText("Paused ") ; sht.suspend() ; } else { paused = false; lpaused.setText("Not paused ") ; sht.resume() ; } } else if ((e.getActionCommand()).equals("Load List")){ urllist = geturllist(); } else if ((e.getActionCommand()).equals("Show List")){ loadWebPage("urlist.txt"); //display with default .txt application } else if ((e.getActionCommand()).equals("--- EXIT ---")) System.exit(0) ; } private Vector geturllist() { paused=false; Vector urlvect=new Vector(); pages = 0 ; lslide.setText("0") ; BufferedReader dis=null; try { dis = new BufferedReader(new FileReader("urlist.txt")) ; String line="" ; while( (line=dis.readLine()) !=null ) { if(!line.equals("")) { //reject blank lines urlvect.addElement(line); pages++ ; } } dis.close() ; } catch (IOException ioe) { System.out.println("Problem with Process ..") ; } if(pages>0){ loadWebPage((String)urlvect.elementAt(0)) ; currentpage=0; } System.out.println(pages + " " + currentpage ) ; this.toFront() ; lslide.setText("Slide " + 0 +" of " + (pages-1)) ; return urlvect; } public void loadWebPage(String url) { try{ String appl = basecommand + url ; Runtime.getRuntime().exec(appl); } catch (IOException ioe) { System.out.println("Problem with Process ..") ; } } void pause(int time) { try { Thread.sleep(time);} // wait for time milliseconds. catch (InterruptedException e) { } } public static void main(String args[]) { pagelet demos = new pagelet("Web Pagelet"); demos.pack(); demos.setVisible(true); demos.urllist=demos.geturllist() ; demos.toFront() ; } } /* Thread to run AutoShow */ class showthread extends Thread{ pagelet parent ; int interval; showthread(pagelet pgl, int interval) { this.interval = interval; parent=pgl ; } public void run() { parent.currentpage=0 ; while(parent.currentpage