Package com.sun.messaging.jmq.admin.apps.console

Source Code of com.sun.messaging.jmq.admin.apps.console.ObjStoreDialog$ObjStoreDocumentListener

/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2000-2010 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License").  You
* may not use this file except in compliance with the License.  You can
* obtain a copy of the License at
* https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt.  See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license."  If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above.  However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/

/*
* @(#)ObjStoreDialog.java  1.31 06/27/07
*/

package com.sun.messaging.jmq.admin.apps.console;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.net.URI;
import java.util.Enumeration;
import java.util.Properties;

import javax.naming.Context;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.JPanel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.ScrollPaneConstants;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent;
import javax.swing.table.AbstractTableModel;

import com.sun.messaging.jmq.admin.util.Globals;
import com.sun.messaging.jmq.admin.resources.AdminConsoleResources;
import com.sun.messaging.jmq.admin.objstore.ObjStoreAttrs;
import com.sun.messaging.jmq.admin.objstore.ObjStoreManager;
import com.sun.messaging.jmq.admin.apps.console.util.LabelledComponent;
import com.sun.messaging.jmq.admin.apps.console.util.LabelValuePanel;

/**
* This dialog is used for object store attributes.
* It can be used to Add an object store to the list
* or to modify (update) an existing object store.
*
*/
public class ObjStoreDialog extends AdminDialog
    implements ActionListener, ListSelectionListener {
   
    protected JTextField  osText;
    protected LabelValuePanel   lvp;
    protected ObjStoreManager  osMgr = null;
    protected Properties   jndiProps = new Properties();
    protected JComboBox    comboBox;
    protected JCheckBox    checkBox;
    protected PropsTableModel   model;
    protected JButton    addButton, delButton, chgButton;
    protected boolean    dirty = false;
    protected JTextField  valueText;
    protected JTable     table;
    protected JTextArea   ta;

    private boolean          editable;
    private JLabel    urlLabel;
    private static AdminConsoleResources acr = Globals.getAdminConsoleResources();
    private static String close[] = {acr.getString(acr.I_DIALOG_CLOSE)};

    /**
     * Creates a non-modal dialog using the specified frame as parent and string
     * as title. By default, will contain the following buttons:
     * <UL>
     * <LI>OK
     * <LI>CANCEL
     * <LI>CLOSE
     * <LI>HELP
     * </UL>
     *
     * @param parent the Frame from which the dialog is displayed
     * @param title the String to display in the dialog's title bar
     */
    public ObjStoreDialog(Frame parent, String title, ObjStoreListCObj oslCObj)  {
  super(parent, title, (OK | CANCEL | HELP));
  if (oslCObj != null)
      osMgr = oslCObj.getObjStoreManager();
    }

    public ObjStoreDialog(Frame parent, String title, int whichButtons,
        ObjStoreListCObj oslCObj)  {
  super(parent, title, whichButtons);
  if (oslCObj != null)
      osMgr = oslCObj.getObjStoreManager();
    }

    public JPanel createWorkPanel()  {
  String[] jndiPropNames = {Context.INITIAL_CONTEXT_FACTORY,
            Context.OBJECT_FACTORIES,
            Context.STATE_FACTORIES,
            Context.URL_PKG_PREFIXES,
            Context.PROVIDER_URL,
            Context.DNS_URL,
            Context.AUTHORITATIVE,
            Context.BATCHSIZE,
            Context.REFERRAL,
            Context.SECURITY_PROTOCOL,
            Context.SECURITY_AUTHENTICATION,
            Context.SECURITY_PRINCIPAL,
            Context.SECURITY_CREDENTIALS,
            Context.LANGUAGE,
            Context.APPLET};

        boolean    propsDlg = false;
        if (getTitle().equals(acr.getString(acr.I_OBJSTORE_PROPS))) {
            propsDlg = true;
        }

  JPanel workPanel = new JPanel();
  workPanel.setLayout(new BorderLayout());

  JPanel panel1 = new JPanel();
  GridBagLayout gridbag = new GridBagLayout();
  panel1.setLayout(gridbag);
  GridBagConstraints c = new GridBagConstraints();

  JPanel osPanel = new JPanel();
  GridBagLayout gb = new GridBagLayout();
  osPanel.setLayout(gb);
  GridBagConstraints c1 = new GridBagConstraints();

  JLabel storeLabel = new JLabel(acr.getString(acr.I_OBJSTORE_NAME) + ":");
  c1.gridx = 0;
  c1.gridy = 0;
  c1.anchor = GridBagConstraints.NORTHEAST;
  gridbag.setConstraints(storeLabel, c1);
  osPanel.add(storeLabel);
 
  osText = new JTextField(25);
  DocumentListener docListener = new ObjStoreDocumentListener();
  osText.getDocument().addDocumentListener(docListener);
  c1.gridx = 1;
  c1.gridy = 0;
  c1.anchor = GridBagConstraints.WEST;
  c1.insets = new Insets(0, 5, 0, 0);
  gb.setConstraints(osText, c1);
  osPanel.add(osText);

  c.gridx = 0;
  c.gridy = 0;
  c1.anchor = GridBagConstraints.WEST;
  panel1.add(osPanel);

  if (propsDlg)
      checkBox = new JCheckBox(acr.getString(acr.I_CONNECT_AFTER_UPDATES), true);
  else
      checkBox = new JCheckBox(acr.getString(acr.I_CONNECT_UPON_ADDING), true);
  checkBox.addActionListener(this);
  c.gridx = 0;
  c.gridy = 1;
  c.gridwidth = 3;
  c.insets = new Insets(0, 0, 0, 0)// reset
  c.anchor = GridBagConstraints.WEST;
  gridbag.setConstraints(checkBox, c);
/*
  panel1.add(checkBox);
*/
 
  JSeparator separator = new JSeparator();
  c.gridx = 0;
  c.gridy = 2;
  c.anchor = GridBagConstraints.CENTER;
  c.fill = GridBagConstraints.HORIZONTAL;
  c.insets = new Insets(5, 0, 5, 0);
  gridbag.setConstraints(separator, c);
  panel1.add(separator);

  JLabel jndiLabel = new JLabel(acr.getString(acr.I_OBJSTORE_JNDI_PROPS));
  c.gridx = 0;
  c.gridy = 3;
  c.gridwidth = 3;
  c.anchor = GridBagConstraints.WEST; // reset
  c.insets = new Insets(0, 0, 0, 0)// reset
  c.fill = GridBagConstraints.NONE; // reset c.anchor = GridBagConstraints.WEST;
  gridbag.setConstraints(jndiLabel, c);
  panel1.add(jndiLabel);

  LabelledComponent items[] = new LabelledComponent[3];
  comboBox = new JComboBox(jndiPropNames);
  comboBox.addActionListener(this);
  items[0] = new LabelledComponent(acr.getString(acr.I_NAME) + ":", comboBox);
  valueText = new JTextField(40);
  valueText.getDocument().addDocumentListener(docListener);
  items[1] = new LabelledComponent(acr.getString(acr.I_VALUE) + ":", valueText);

  model = new PropsTableModel();
  table = new JTable(model);
  table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  ListSelectionModel lsm = table.getSelectionModel();
  lsm.addListSelectionListener(this);
  JScrollPane scrollPane = new JScrollPane(table);
  scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
 
  items[2] = new LabelledComponent(" ", scrollPane);

  lvp = new LabelValuePanel(items, 5, 5);
  c.gridx = 0;
  c.gridy = 4;
  c.gridwidth = 2;
  c.anchor = GridBagConstraints.CENTER;
  gridbag.setConstraints(lvp, c);
  panel1.add(lvp);

  //
  // Make width of list the same as width of text field and
  // 8 rows in height.
  //
  int width = valueText.getPreferredSize().width;
  Dimension dim = scrollPane.getPreferredSize();
  //scrollPane.setPreferredSize(new Dimension(width, dim.height));
  table.getRowHeight();
  table.setPreferredScrollableViewportSize(new Dimension(width,
             8 * table.getRowHeight()));
 

  JPanel buttonPanel = new JPanel();
  addButton = new JButton(acr.getString(acr.I_DIALOG_ADD));
  addButton.addActionListener(this);
   delButton = new JButton(acr.getString(acr.I_DIALOG_DELETE));
  delButton.addActionListener(this);
  delButton.setEnabled(false);
  chgButton = new JButton(acr.getString(acr.I_DIALOG_CHANGE));
  chgButton.addActionListener(this);
  chgButton.setEnabled(false);
  buttonPanel.setLayout(new GridLayout(3, 1, 5, 5));
  buttonPanel.add(addButton);
  buttonPanel.add(delButton);
  buttonPanel.add(chgButton);
  c.gridx = 2;
  c.gridy = 4;
  c.gridwidth = 1;
  c.anchor = GridBagConstraints.NORTHWEST;
  c.insets = new Insets(items[0].getPreferredSize().height +
            items[1].getPreferredSize().height + 20, 0, 0, 0);
  gridbag.setConstraints(buttonPanel, c);
  panel1.add(buttonPanel);

  String s = acr.getString(acr.W_SAVE_AS_CLEAR_TEXT);
  ta = new JTextArea(s);
  ta.setLineWrap(true);
  ta.setWrapStyleWord(true);
  Color bgColor = panel1.getBackground();
  ta.setBackground(bgColor);
  Color fgColor = jndiLabel.getForeground();
  ta.setForeground(fgColor);
  ta.setFont(jndiLabel.getFont());

  // Find longer length to set length of text area:
  // Either 1) ObjectStoreLabel: ___     OR
  //    2) Width of LabelValuePanel
  int width1 = storeLabel.getPreferredSize().width + 5 +
      osText.getPreferredSize().width;
  int width2 = lvp.getPreferredSize().width;
  if (width1 >= width2)
      ta.setSize(width1, 1);
  else
      ta.setSize(width2, 1);
  ta.setEditable(false);
  Dimension textSize = ta.getPreferredSize();
  ta.setSize(textSize);
 
  c.gridx = 0;
  c.gridy = 5;
  c.gridwidth = 3;
  c.anchor = GridBagConstraints.WEST;
  c.insets = new Insets(5, 0, 5, 0);
  gridbag.setConstraints(ta, c);
  panel1.add(ta);

  workPanel.add(panel1, BorderLayout.NORTH);
 
  return (workPanel);
    }

    public void doOK() { }
    public void doApply()  { }
    public void doReset() { }
    public void doCancel() { }
    public void doClose() { }
    public void doClear() {
  // Clear out all fields.
        jndiProps.clear();
  osText.setText("");
  checkBox.setSelected(true);
  comboBox.setSelectedIndex(0);
  valueText.setText("");

  delButton.setEnabled(false);
  chgButton.setEnabled(false);

  model.fireTableChanged(new TableModelEvent(model));

        osText.requestFocus();
 
  dirty = false;
 
    }

    /*
     * BEGIN INTERFACE ActionListener
     */
    public void actionPerformed(ActionEvent e)  {
  Object source = e.getSource();

  if (source == addButton)  {
      doAdd();
  } else if (source == delButton) {
      doDelete();
  } else if (source == chgButton) {
      doChange();
  } else if (source == comboBox) {
      doComboBox();
      dirty = true;
  } else if (source == checkBox) {
      dirty = true;
  } else
      super.actionPerformed(e);
    }
    /*
     * END INTERFACE ActionListener
     */

    /*
     * BEGIN INTERFACE ListSelectionListener
     */
    public void valueChanged(ListSelectionEvent e)  {
  ListSelectionModel lsm = (ListSelectionModel)e.getSource();
  boolean  isAdjusting = e.getValueIsAdjusting();
  int  firstIndex = e.getFirstIndex();
  int  lastIndex = e.getLastIndex();

  if (isAdjusting == false) {
      /*
       * Query model for selected index and get the object at the
       * index.
       */
      if (lsm.isSelectionEmpty()) {
    delButton.setEnabled(false);
    chgButton.setEnabled(false);
      } else {
    //
    // Selected something in list so
    // change the combo box of properties and display its
    // value.
    //
          int selectedRow = lsm.getMinSelectionIndex();

    String selectedItem = (String)model.getValueAt(selectedRow, 0);
    comboBox.setSelectedItem(selectedItem);
    valueText.setText(jndiProps.getProperty(selectedItem));

     /*
     * Change state of buttons only if this is an
     * editable dialog by checking a text field.
     * If not editable, then just leave buttons as is.
     */
     if (isEditable()) {
        delButton.setEnabled(true);
        chgButton.setEnabled(true);
    }

    /*
     * Dispatch a selection event.
          SelectionEvent se = new SelectionEvent(this, SelectionEvent.OBJ_SELECTED);
          se.setSelectedObj((ConsoleObj)o);

          fireAdminEventDispatched(se);
     */
      }
  }
    }
    /*
     * END INTERFACE ListSelectionListener
     */


    public void doAdd() {

  //
  // Make sure a value was entered.
  //
  String value = (valueText.getText()).trim();
  if (value == null || value.equals("")) {
      JOptionPane.showOptionDialog(this,
    acr.getString(acr.E_NO_PROP_VALUE, (String)comboBox.getSelectedItem()),
    acr.getString(acr.I_OBJSTORE) + ": " +
                    acr.getString(acr.I_ERROR_CODE,
                          AdminConsoleResources.E_NO_PROP_VALUE),
                JOptionPane.YES_NO_OPTION,
                JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      valueText.requestFocus();
      return;
  }

  //
  // Check if the value has already been set.
  //
  String checkValue = jndiProps.getProperty((String)comboBox.getSelectedItem());
  if (checkValue != null) {
      JOptionPane.showOptionDialog(this,
    acr.getString(acr.E_PROP_VALUE_EXISTS,
        (String)comboBox.getSelectedItem()),
    acr.getString(acr.I_OBJSTORE) + ": " +
                    acr.getString(acr.I_ERROR_CODE,
                          AdminConsoleResources.E_PROP_VALUE_EXISTS),
                JOptionPane.YES_NO_OPTION,
                JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      return;
  }
 
  /*
   * Verify the value (if possible) if we're
   * adding/changing the provider url.
   */
  if (((String)comboBox.getSelectedItem()).equals(Context.PROVIDER_URL)) {
      verifyProviderURL(value);
  }

  //
  // Add value to jndiProps
  //
  jndiProps.setProperty((String)comboBox.getSelectedItem(), value);

  //
  // Select the item in the list that was just added.
  //
  int index = 0;
 
  for (Enumeration e = jndiProps.propertyNames(); e.hasMoreElements();) {
    String propName = (String)e.nextElement();
    if (propName.equals((String)comboBox.getSelectedItem()))
        break;
    index++;
  }
  model.fireTableRowsInserted(index, index);
  table.setRowSelectionInterval(index, index);

    }

    public void doDelete() {

  //
  // Send table event that a row was deleted.
  //
  int index = 0;
 
  for (Enumeration e = jndiProps.propertyNames(); e.hasMoreElements();) {
    String propName = (String)e.nextElement();
    if (propName.equals((String)comboBox.getSelectedItem()))
        break;
    index++;
  }
  jndiProps.remove((String)comboBox.getSelectedItem());
  model.fireTableRowsDeleted(index, index);

  // Nothing is selected now so
  // disable these buttons and clear
  // out value field.
  addButton.setEnabled(true);
  delButton.setEnabled(false);
  chgButton.setEnabled(false);
  valueText.setText("");
    }

    public void doChange() {

  //
  // Make sure a value was entered.
  //
  String value = (valueText.getText()).trim();
  if (value == null || value.equals("")) {
      JOptionPane.showOptionDialog(this,
    acr.getString(acr.E_NO_PROP_VALUE,
        (String)comboBox.getSelectedItem()),
    acr.getString(acr.I_OBJSTORE) + ": " +
                    acr.getString(acr.I_ERROR_CODE,
                          AdminConsoleResources.E_NO_PROP_VALUE),
                JOptionPane.YES_NO_OPTION,
                JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      valueText.requestFocus();
      return;
  }

  /*
   * Verify the value (if possible) if we're
   * adding/changing the provider url.
   */
  if (((String)comboBox.getSelectedItem()).equals(Context.PROVIDER_URL)) {
      verifyProviderURL(value);
  }

  //
  // Send table event that a row was updated.
  //
  int index = 0;
 
  for (Enumeration e = jndiProps.propertyNames(); e.hasMoreElements();) {
    String propName = (String)e.nextElement();
    if (propName.equals((String)comboBox.getSelectedItem()))
        break;
    index++;
  }
  jndiProps.setProperty((String)comboBox.getSelectedItem(), value);
  model.fireTableRowsUpdated(index, index);

    }

/*
    public void doUrlButton() {
  osText.setEnabled(false);
  urlLabel.setEnabled(true);
    }

    public void doOsTextButton() {
  osText.setEnabled(true);
  urlLabel.setEnabled(false);
    }
*/

    public void doComboBox() {
  String name = (String)comboBox.getSelectedItem();
 
  if (jndiProps == null)
      valueText.setText("");

  if (name != null) { 
            String value = jndiProps.getProperty(name);
      /*
         * Stuff the value in the text area.
       */
      valueText.setText(jndiProps.getProperty(name));
      if (value != null) {
    //
    // Select the item in the list that was selected in
    // the combox box, if it exists.
    //
    int index = 0;
    for (Enumeration e = jndiProps.propertyNames(); e.hasMoreElements();) {
        String propName = (String)e.nextElement();
        if (propName.equals(name))
            break;
        index++;
    }
    table.setRowSelectionInterval(index, index);

    // Set the appropriate buttons, if editable
    if (isEditable()) {
        addButton.setEnabled(false);
        delButton.setEnabled(true);
        chgButton.setEnabled(true);
    }
      } else {
    // Set the appropriate buttons, if editable
    if (isEditable()) {
        addButton.setEnabled(true);
        delButton.setEnabled(false);
        chgButton.setEnabled(false);
    }
      }
  // Empty property list, nothing selected so only Add applies.
  } else if (name == null) { 
      if (isEditable()) {
    addButton.setEnabled(true);
    delButton.setEnabled(false);
    chgButton.setEnabled(false);
      }
  }
    }

    protected int checkMandatoryProps() {

  //
  // Make sure a current set of mandatory attributes were
  // set.
  //
  String[] mandatoryNames = {Context.INITIAL_CONTEXT_FACTORY,
           Context.PROVIDER_URL};

  for (int i = 0; i < mandatoryNames.length; i++) {
      String propName = jndiProps.getProperty(mandatoryNames[i]);
      if (propName == null) {
          JOptionPane.showOptionDialog(this,
        acr.getString(acr.E_NO_JNDI_PROPERTY_VALUE, mandatoryNames[i]),
        acr.getString(acr.I_ADD_OBJSTORE) + ": " +
                        acr.getString(acr.I_ERROR_CODE,
                                      AdminConsoleResources.E_NO_JNDI_PROPERTY_VALUE),
                    JOptionPane.YES_NO_OPTION,
                    JOptionPane.ERROR_MESSAGE, null, close, close[0]);
    // set the combo box to this property name and set cursor at the textfield.
    comboBox.setSelectedItem(mandatoryNames[i]);
    valueText.requestFocus()
          return (0);

      }
            else if (mandatoryNames[i].equals(Context.INITIAL_CONTEXT_FACTORY)) {
    // Validate the value of initial context provided.
    try {
        Object obj = (Object)Class.forName(propName);
    } catch (ClassNotFoundException e) {
              JOptionPane.showOptionDialog(this,
            acr.getString(acr.E_CANNOT_INSTANTIATE, propName,
          mandatoryNames[i]),
            acr.getString(acr.I_ADD_OBJSTORE) + ": " +
                            acr.getString(acr.I_ERROR_CODE,
                                      AdminConsoleResources.E_CANNOT_INSTANTIATE),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
        // Set the combo box this this property name and
        // set cursor at the textfield.
        comboBox.setSelectedItem(mandatoryNames[i]);
        valueText.requestFocus()
        return 0;
    }

      }
  }
  return 1;
    }

    protected String getDefaultStoreName(String baseName)  {
        if (osMgr.getStore(baseName) == null)  {
            return (baseName);
        }

        for (int i = 1; i < 1000; ++i)  {
            String newStr = baseName + i;
            if (osMgr.getStore(newStr) == null)  {
                return (newStr);
            }
        }

        return ("");
    }

    protected boolean isEditable() {
  return editable;
    }

    protected void setEditable(boolean editable)  {

  this.editable = editable;

  if (editable) {
      osText.setEditable(true);
      valueText.setEditable(true);
      addButton.setEnabled(true);
      delButton.setEnabled(true);
      chgButton.setEnabled(true);
      ta.setText(acr.getString(acr.W_SAVE_AS_CLEAR_TEXT));
  } else {
      osText.setEditable(false);
      valueText.setEditable(false);
      addButton.setEnabled(false);
      delButton.setEnabled(false);
      chgButton.setEnabled(false);
      ta.setText(acr.getString(acr.W_OS_NOT_EDITABLE_TEXT));
  }
    }

    /*
     * Verify this provider URL value exists if we
     * think they are specifying a file URL.
     * If the file url does not exist, just print a warning.
     */
    private void verifyProviderURL(String value) {

  boolean fileURL = false;
  File    file = null;

  // Check if this if a file url by checking the initialContext type.
  String facInit = jndiProps.getProperty(Context.INITIAL_CONTEXT_FACTORY);
  if (facInit != null && !facInit.equals("")) {
      // If InitialContextFactory = RefFSContextFactory,
      // then this is probably a file url.
      if (facInit.equals("com.sun.jndi.fscontext.RefFSContextFactory")) {
         fileURL = true;
      }
  }

  // If we still don't know if this is a file URL, check if
  // the provider url value starts with "file:".
  if (!fileURL && value.startsWith("file:")) {
      fileURL = true;
  }

  // OK, we think they are specifying a file URL,
  // so let's see if this file URL exists.
  // If not, then print a warning.
  if (fileURL) {
      try {
      URI uri = new URI(value);
      file = new File(uri);
      } catch (Exception e) {
          try {
              file = new File(value)// in case no "file:" specified.
    } catch (Exception ex) {
        file = null// do nothing - we tried.
          }
      } 
      if (file != null && !file.isDirectory()) {
    JOptionPane.showOptionDialog(this,
                    acr.getString(acr.W_PROVIDER_URL, Context.PROVIDER_URL, value),
                    acr.getString(acr.I_OBJSTORE) + ": "
                        + acr.getString(acr.I_WARNING_CODE, acr.W_PROVIDER_URL),
                  JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE,
        null, close, close[0]);
      }
  }

    }

    /*
     * TableModel class for Property Table.
     * Note: This model assumes the objects at column = 0
     * are the ConsoleObj objects.
     */

    private static String [] columnNames = {acr.getString(acr.I_NAME),
               acr.getString(acr.I_VALUE)};

    class PropsTableModel extends AbstractTableModel {
  /**
   * Returns the number of collumns in table.
   *
   * @return The number of collumns in table.
   */
        public int getColumnCount() {

            return columnNames.length;
        }
       
  /**
   * Returns the number of rows in table.
   *
   * @return The number of rows in table.
   */
  public int getRowCount() {
      if (jndiProps == null)
    return 0;
      else
          return jndiProps.size();
        }

  /**
   * Returns the collumn name/label for a given collumn.
   *
   * @return the collumn name/label for a given collumn.
   */
        public String getColumnName(int col) {
            return columnNames[col];
        }

  /**
   * Return value at a particular table cell location.
   * Calls the TabledInspector.getValueAtCollumn()
   * method.
   */
        public Object getValueAt(int row, int col) {

      if (jndiProps == null)
    return "";

      int i = 0;
      for (Enumeration e = jndiProps.propertyNames();
          e.hasMoreElements();) {
    String propName = (String)e.nextElement();
    if (col == 0 && i == row)
        return propName;
    else if (col == 1 && i == row)
        return jndiProps.getProperty(propName);
    i++;
      }
      return "";
        }

        /**
         * Don't need to implement this method unless your table's
         * data can change.
         */
        public void setValueAt(Object value, int row, int col) {
        }

    }

    class ObjStoreDocumentListener implements DocumentListener  {
        public void insertUpdate(DocumentEvent e) { dirty = true; }
        public void removeUpdate(DocumentEvent e) { dirty = true; }
        public void changedUpdate(DocumentEvent e) { dirty = true; }
    }

}
TOP

Related Classes of com.sun.messaging.jmq.admin.apps.console.ObjStoreDialog$ObjStoreDocumentListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.