com.zeroc.IceGridGUI.Application.DbEnvEditor.java Source code

Java tutorial

Introduction

Here is the source code for com.zeroc.IceGridGUI.Application.DbEnvEditor.java

Source

// **********************************************************************
//
// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************

package com.zeroc.IceGridGUI.Application;

import javax.swing.JComboBox;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.CellConstraints;

import com.zeroc.IceGrid.*;
import com.zeroc.IceGridGUI.*;

class DbEnvEditor extends CommunicatorChildEditor {
    DbEnvEditor() {
        _name.getDocument().addDocumentListener(_updateListener);
        _name.setToolTipText("Identifies this Freeze database environment within an Ice communicator");
        _description.getDocument().addDocumentListener(_updateListener);
        _description.setToolTipText("An optional description for this database environment");

        JTextField dbHomeTextField = (JTextField) _dbHome.getEditor().getEditorComponent();
        dbHomeTextField.getDocument().addDocumentListener(_updateListener);
        _dbHome.setToolTipText("<html><i>node data dir</i>/servers/<i>server id</i>"
                + "/dbs/<i>db env name</i> if created by the IceGrid Node;<br>"
                + "otherwise, IceGrid does not create this directory" + "</html>");

        _properties = new PropertiesField(this);
    }

    @Override
    void writeDescriptor() {
        DbEnvDescriptor descriptor = (DbEnvDescriptor) getDbEnv().getDescriptor();
        descriptor.name = _name.getText().trim();
        descriptor.description = _description.getText();
        descriptor.dbHome = getDbHomeAsString();
        descriptor.properties = _properties.getProperties();
    }

    @Override
    boolean isSimpleUpdate() {
        DbEnvDescriptor descriptor = (DbEnvDescriptor) getDbEnv().getDescriptor();
        return descriptor.name.equals(_name.getText().trim());
    }

    @Override
    Communicator.ChildList getChildList() {
        return ((Communicator) _target.getParent()).getDbEnvs();
    }

    @Override
    protected void appendProperties(DefaultFormBuilder builder) {
        builder.append("Name");
        builder.append(_name, 3);
        builder.nextLine();

        builder.append("Description");
        builder.nextLine();
        builder.append("");
        builder.nextRow(-2);
        CellConstraints cc = new CellConstraints();
        JScrollPane scrollPane = new JScrollPane(_description);
        builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 3, 3));
        builder.nextRow(2);
        builder.nextLine();

        builder.append("DB Home");
        builder.append(_dbHome, 3);
        builder.nextLine();

        builder.append("Properties");
        builder.nextLine();
        builder.append("");
        builder.nextLine();
        builder.append("");

        builder.nextLine();
        builder.append("");

        builder.nextRow(-6);
        scrollPane = new JScrollPane(_properties);
        builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 3, 7));
        builder.nextRow(6);
        builder.nextLine();
    }

    @Override
    protected void buildPropertiesPanel() {
        super.buildPropertiesPanel();
        _propertiesPanel.setName("Database Environment Properties");
    }

    @Override
    protected boolean validate() {
        return check(new String[] { "Name", _name.getText().trim() });
    }

    void show(DbEnv dbEnv) {
        detectUpdates(false);
        _target = dbEnv;

        DbEnvDescriptor descriptor = (DbEnvDescriptor) dbEnv.getDescriptor();

        Utils.Resolver resolver = null;
        if (dbEnv.getCoordinator().substitute()) {
            resolver = dbEnv.getResolver();
        }
        boolean isEditable = resolver == null;

        _name.setText(Utils.substitute(descriptor.name, resolver));
        _name.setEditable(isEditable);

        _description.setText(Utils.substitute(descriptor.description, resolver));
        _description.setEditable(isEditable);
        _description.setOpaque(isEditable);

        _dbHome.setEnabled(true);
        _dbHome.setEditable(true);
        setDbHome(Utils.substitute(descriptor.dbHome, resolver));
        _dbHome.setEnabled(isEditable);
        _dbHome.setEditable(isEditable);

        _properties.setProperties(descriptor.properties, null, null, resolver, isEditable);

        _applyButton.setEnabled(dbEnv.isEphemeral());
        _discardButton.setEnabled(dbEnv.isEphemeral());
        detectUpdates(true);

        if (dbEnv.isEphemeral()) {
            updated();
        }
    }

    private DbEnv getDbEnv() {
        return (DbEnv) _target;
    }

    private void setDbHome(String dbHome) {
        if (dbHome.equals("")) {
            _dbHome.setSelectedItem(NO_DB_HOME);
        } else {
            _dbHome.setSelectedItem(dbHome);
        }
    }

    private String getDbHomeAsString() {
        Object obj = _dbHome.getSelectedItem();
        if (obj == NO_DB_HOME) {
            return "";
        } else {
            return obj.toString().trim();
        }
    }

    private JTextField _name = new JTextField(20);
    private JTextArea _description = new JTextArea(3, 20);

    @SuppressWarnings("unchecked")
    private JComboBox _dbHome = new JComboBox(new Object[] { NO_DB_HOME });
    private PropertiesField _properties;

    static private final Object NO_DB_HOME = new Object() {
        @Override
        public String toString() {
            return "Created by the IceGrid Node";
        }
    };
}