UrlSettingsPanel.java :  » Development » TreeView-1.1.4r5 » edu » stanford » genetics » treeview » Java Open Source

Java Open Source » Development » TreeView 1.1.4r5 
TreeView 1.1.4r5 » edu » stanford » genetics » treeview » UrlSettingsPanel.java
/* BEGIN_HEADER                                              Java TreeView
 *
 * $Author: alokito $
 * $RCSfile: UrlSettingsPanel.java,v $
 * $Revision: 1.6 $B
 * $Date: 2010/05/11 13:30:43 $
 * $Name:  $
 *
 * This file is part of Java TreeView
 * Copyright (C) 2001-2003 Alok Saldanha, All Rights Reserved. Modified by Alex Segal 2004/08/13. Modifications Copyright (C) Lawrence Berkeley Lab.
 *
 * This software is provided under the GNU GPL Version 2. In particular, 
 *
 * 1) If you modify a source file, make a comment in it containing your name and the date.
 * 2) If you distribute a modified version, you must do it under the GPL 2.
 * 3) Developers are encouraged but not required to notify the Java TreeView maintainers at alok@genome.stanford.edu when they make a useful addition. It would be nice if significant contributions could be merged into the main distribution.
 *
 * A full copy of the license can be found in gpl.txt or online at
 * http://www.gnu.org/licenses/gpl.txt
 *
 * END_HEADER 
 */
package edu.stanford.genetics.treeview;


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

/**
* This class displays editable Url settings.
*
* It requires a UrlExtractor, HeaderInfo and optionally a UrlPresets
*/
public class UrlSettingsPanel extends JPanel implements SettingsPanel {
  private UrlExtractor urlExtractor;
  private UrlPresets urlPresets = null;
  private HeaderInfo headerInfo;

  private JDialog d;
    private Window window;
  public UrlSettingsPanel(UrlExtractor ue, UrlPresets up) {
    this(ue, ue.getHeaderInfo(), up);
  }
  public UrlSettingsPanel(UrlExtractor ue, HeaderInfo hi, UrlPresets up) {
    super();
    urlExtractor = ue;
    urlPresets = up;
    headerInfo = hi;
    templateField = new TemplateField();
    templateField.setText(urlExtractor.getUrlTemplate());

    redoLayout();
    updatePreview();
    UrlSettingsPanel.this.setEnabled(urlExtractor.isEnabled());
    
  }

    public static void main(String [] argv) {
  UrlPresets p = new UrlPresets(new DummyConfigNode("UrlPresets"));
  HeaderInfo hi = new DummyHeaderInfo();
  UrlExtractor ue = new UrlExtractor(hi);

  UrlSettingsPanel e  = new UrlSettingsPanel( ue, hi, p);
  Frame f = new Frame("Url Settings Test");
  f.add(e);
  f.addWindowListener(new WindowAdapter (){
    public void windowClosing(WindowEvent we) 
    {System.exit(0);}
      });
  f.pack();
  f.setVisible(true);
    }

  public void synchronizeFrom() {
    redoLayout();
    UrlSettingsPanel.this.setEnabled(urlExtractor.isEnabled());
  }

  public void synchronizeTo() {
    //nothing to do...
  }
  class EnablePanel extends JPanel {
    JCheckBox enableBox;
    EnablePanel() {
    setLayout(new BorderLayout());
      add(new JLabel ("Web Link:", JLabel.LEFT), BorderLayout.NORTH);
      enableBox = new JCheckBox("Enable", urlExtractor.isEnabled());
      enableBox.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
        urlExtractor.setEnabled(enableBox.isSelected());
        UrlSettingsPanel.this.setEnabled(enableBox.isSelected());
        }
      });
      add(enableBox, BorderLayout.CENTER);
      
    }
    public boolean isSelected() {
    return enableBox.isSelected();
    }
  }
  
  



  /**
   *  Create a blocking dialog containing this component
   *
   * @param  f  frame to block
   */
  public void showDialog(Frame f, String title) {
    d = new JDialog(f, title);
    window = d;
    d.setLayout(new BorderLayout());
    d.add(this, BorderLayout.CENTER);
    d.add(new ButtonPanel(), BorderLayout.SOUTH);
    d.addWindowListener(
      new WindowAdapter() {
        public void windowClosing(WindowEvent we) {
          we.getWindow().dispose();
        }
      });
    d.pack();
    d.setVisible(true);
  }
  public void showDialog(Frame f) {
    showDialog(f, "Url Settings Test");
  }

  private JButton[] buttons;
  private JTextField previewField;
  private TemplateField templateField;
  private HeaderChoice headerChoice;
  
  
  public void setEnabled(boolean b) {
      templateField.setEnabled(b);
      headerChoice.setEnabled(b);
      previewField.setEnabled(b);
      for (int i = 0; i < buttons.length; i++) {
      if (buttons[i] != null)
        buttons[i].setEnabled(b);
        
      }
    }

    private GridBagConstraints gbc;
    public void redoLayout() {
      String [] preset;
      preset = urlPresets.getPresetNames();
      int nPresets = preset.length;
      removeAll();
      setLayout(new GridBagLayout());
      gbc = new GridBagConstraints();
      gbc.gridwidth = 1;
      gbc.fill = GridBagConstraints.HORIZONTAL;
      gbc.anchor = GridBagConstraints.NORTH;
      gbc.gridy = 0;
      gbc.gridx = 0;
      gbc.weightx = 100;
      final JCheckBox enableBox = new JCheckBox("Enable", urlExtractor.isEnabled());
      enableBox.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          urlExtractor.setEnabled(enableBox.isSelected());
          UrlSettingsPanel.this.setEnabled(enableBox.isSelected());
        }
      });
      add(enableBox, gbc);
      gbc.gridx  = 1;
      add(templateField, gbc);
      gbc.gridx  = 2;
      headerChoice  = new HeaderChoice();
      gbc.fill = GridBagConstraints.NONE;
      gbc.weightx = 0;
      add(headerChoice, gbc);
      gbc.gridx  = 0;
      gbc.gridy = 1;
      gbc.gridwidth = 3;
      gbc.fill = GridBagConstraints.HORIZONTAL;
      previewField = new JTextField("Ex: " + urlExtractor.getUrl(0));
//      previewField = new JTextField(urlExtractor.substitute(tester));
      previewField.setEditable(false);
      add(previewField, gbc);
      JPanel presetPanel = new JPanel();
      buttons = new JButton[nPresets];
      for (int i = 0; i < nPresets; i++) {
      JButton presetButton = new JButton((urlPresets.getPresetNames()) [i]);
      final int index = i;
      presetButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
        templateField.setText(urlPresets.getTemplate(index));
        updatePreview();
        }
      });
        presetPanel.add(presetButton);
        buttons[index] = presetButton;
      }
      gbc.gridy = 2;
      gbc.fill = GridBagConstraints.BOTH;
      gbc.weighty = 100;
      gbc.weightx = 100;
//      add(new JScrollPane(presetPanel, JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS), gbc);
      add(presetPanel, gbc);


      try {
        headerChoice.setSelectedIndex(urlExtractor.getIndex());
      } catch(  java.lang.IllegalArgumentException e) {
      }
    }

    private void updatePreview() {
      urlExtractor.setUrlTemplate(templateField.getText());
      urlExtractor.setIndex(headerChoice.getSelectedIndex());
      previewField.setText("Ex: " + urlExtractor.getUrl(0));
    }



    private class HeaderChoice extends JComboBox implements ItemListener {
      HeaderChoice() {
        super();
        String [] headers;
        int lastI;
        if (headerInfo != null) {
          headers = headerInfo.getNames();
          lastI = headers.length;
          if (headerInfo.getIndex("GWEIGHT") != -1) {
            lastI--;
          }
        } else {
          headers = new String [] {"Dummy1", "Dummy2", "Dummy3"};
          lastI = headers.length;
        }
        
        for (int i = 0; i < lastI; i++) {
          if (headers[i] == null) {
            addItem("-- NULL --");
          } else {
            addItem(headers[i]);
          }
        }
        addItemListener(this);
      }
      public void itemStateChanged(ItemEvent e) {
        updatePreview();
      }
    }
    


    private class TemplateField extends JTextField {
      TemplateField () {
      super("enter url template");
      addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
          updatePreview();
        }
      });
      }
    }
  
  private class ButtonPanel extends JPanel {
  ButtonPanel() {
      JButton save_button = new JButton("Close");
      save_button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
      window.setVisible(false);
        }
    });
      add(save_button);

    }    
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.