home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / inprise / JSAMPLES.Z / ImportDlg.java < prev    next >
Text File  |  1998-05-08  |  5KB  |  134 lines

  1. /*
  2.  * Copyright (c) 1997-1998 Borland International, Inc. All Rights Reserved.
  3.  * 
  4.  * This SOURCE CODE FILE, which has been provided by Borland as part
  5.  * of a Borland product for use ONLY by licensed users of the product,
  6.  * includes CONFIDENTIAL and PROPRIETARY information of Borland.  
  7.  *
  8.  * USE OF THIS SOFTWARE IS GOVERNED BY THE TERMS AND CONDITIONS 
  9.  * OF THE LICENSE STATEMENT AND LIMITED WARRANTY FURNISHED WITH
  10.  * THE PRODUCT.
  11.  *
  12.  * IN PARTICULAR, YOU WILL INDEMNIFY AND HOLD BORLAND, ITS RELATED
  13.  * COMPANIES AND ITS SUPPLIERS, HARMLESS FROM AND AGAINST ANY CLAIMS
  14.  * OR LIABILITIES ARISING OUT OF THE USE, REPRODUCTION, OR DISTRIBUTION
  15.  * OF YOUR PROGRAMS, INCLUDING ANY CLAIMS OR LIABILITIES ARISING OUT OF
  16.  * OR RESULTING FROM THE USE, MODIFICATION, OR DISTRIBUTION OF PROGRAMS
  17.  * OR FILES CREATED FROM, BASED ON, AND/OR DERIVED FROM THIS SOURCE
  18.  * CODE FILE.
  19.  */
  20. package borland.samples.apps.chess.client  ;
  21.  
  22. import java.awt.*;
  23. import java.awt.event.ActionEvent;
  24. import java.awt.event.WindowEvent;
  25. import java.awt.event.ActionListener;
  26. import java.util.ResourceBundle;
  27.  
  28. /**Displays the Import/Export Dialog. The Import/Export dialog
  29. * allows the current game to be copied in PGN(Portable game notation) format to the clipboard.
  30. * From there, they could be saved and used in other programs that understand
  31. * PGN. Also any PGN file may be copied into the
  32. * dialogs text field and then displayed by the ChessViewer.
  33. *@see http://ourworld.compuserve.com/homepages/Manfred_Rosenboom/pgn_spec.htm
  34. * or
  35. *@see ftp://chess.onenet.net/pub/chess/PGN/Standard
  36. */
  37. public class ImportDlg extends Dialog implements OkCancelDialog{
  38.   ResourceBundle res = ResourceBundle.getBundle("borland.samples.apps.chess.client.Res");
  39.   Panel dlgPanel = new Panel();
  40.   Button cancelButton = new Button();
  41.   Button okButton = new Button();
  42.   TextArea game = new TextArea();
  43.   BorderLayout dialogLayout = new BorderLayout();
  44.   Panel innerPanel = new Panel();
  45.   BorderLayout innerLayout = new BorderLayout();
  46.   Label instructions = new Label();
  47.   Panel buttonBar = new Panel();
  48.   Label eastSpace = new Label("  ");
  49.   Label westSpace = new Label("  ");
  50.   ChessViewer dlgParent;
  51.  
  52.   public ImportDlg(ChessViewer dlgParent,String data)  {
  53.     super(dlgParent.f,"",false);
  54.     setTitle(res.getString("VERY_PRIMITIVE_PGN"));
  55.     this.dlgParent = dlgParent;
  56.     enableEvents(AWTEvent.WINDOW_EVENT_MASK);
  57.     try {
  58.       dlgParent.statusLine.setText(res.getString("COPY_TO_THE_CLIPBOARD"));
  59.       dlgParent.setModal(true);
  60.       game.setText(data);
  61.       jbInit();
  62.       add(dlgPanel);
  63.       pack();
  64.       setLocation(300,200);
  65.     }
  66.     catch (Exception e) {
  67.       e.printStackTrace();
  68.     }
  69.   }
  70.  
  71.   private void jbInit() {
  72.     dlgPanel.setLayout(dialogLayout);
  73.     innerPanel.setLayout(innerLayout);
  74.     game.selectAll();
  75.     instructions.setText(res.getString("TO_IMPORT_PASTE_THE"));
  76.     westSpace.setText(" "); //from the days before I learned how to use GridBagLayout <g>
  77.     dlgPanel.add(innerPanel,BorderLayout.CENTER);
  78.     instructions.setAlignment(Label.CENTER);
  79.     innerPanel.add(instructions,BorderLayout.NORTH);
  80.     buttonBar.add(okButton);
  81.     okButton.setLabel(res.getString("IMPORT"));
  82.     buttonBar.add(cancelButton);
  83.     cancelButton.setLabel(res.getString("CANCEL"));
  84.     okButton.addActionListener(new OkButtonListener(this));
  85.     cancelButton.addActionListener(new CancelButtonListener(this));
  86.     innerPanel.add(game,BorderLayout.CENTER);
  87.     dlgPanel.add(eastSpace,BorderLayout.EAST);
  88.     dlgPanel.add(westSpace,BorderLayout.WEST);
  89.     innerPanel.add(buttonBar,BorderLayout.SOUTH);
  90.   }
  91.  
  92.   public void setVisible(boolean isVisible) {
  93.     super.setVisible(isVisible);
  94.     if (isVisible)
  95.       game.requestFocus();
  96.   }
  97.  
  98.   /**So System close acts like cancel
  99.   */
  100.   protected void processWindowEvent(WindowEvent e)  {
  101.     if (e.getID() == WindowEvent.WINDOW_CLOSING)
  102.       cancel(null);
  103.     else
  104.       super.processWindowEvent(e);
  105.   }
  106.  
  107.   /**OkButtonListener invokes this OkCancelDialog interface method
  108.   */
  109.   public void ok(ActionEvent evt) {
  110.     try {
  111.       dlgParent.importGame(game.getText());
  112.       dispose();
  113.       dlgParent.setModal(false);
  114.     }
  115.     catch (Exception e) {
  116.        e.printStackTrace();
  117.     }
  118.   }
  119.  
  120.   /**CancelButtonListener invokes this OkCancelDialog interface method
  121.   */
  122.   public void cancel(ActionEvent evt) {
  123.     try {
  124.       dlgParent.statusLine.setText("");
  125.       dispose();
  126.       dlgParent.setModal(false);
  127.     }
  128.     catch (Exception e) {
  129.       e.printStackTrace();
  130.     }
  131.   }
  132. }
  133.  
  134.