Package mondrian.gui

Source Code of mondrian.gui.SchemaTreeCellEditor

/*
// $Id: //open/mondrian-release/3.2/src/main/mondrian/gui/SchemaTreeCellEditor.java#1 $
// This software is subject to the terms of the Eclipse Public License v1.0
// Agreement, available at the following URL:
// http://www.eclipse.org/legal/epl-v10.html.
// Copyright (C) 2006-2009 Julian Hyde and others
// Copyright (C) 2006-2007 CINCOM SYSTEMS, INC.
// All Rights Reserved.
// You must accept the terms of that agreement to use this software.
*/
package mondrian.gui;

import java.awt.Component;
import java.awt.event.MouseEvent;
import java.util.*;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JTree;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreeCellEditor;
import javax.swing.tree.TreePath;

/**
*
* @author sarora
* @version $Id: //open/mondrian-release/3.2/src/main/mondrian/gui/SchemaTreeCellEditor.java#1 $
*/
public class SchemaTreeCellEditor
    extends javax.swing.tree.DefaultTreeCellEditor
{
    private final ClassLoader myClassLoader;
    JComboBox listEditor;
    final List<CellEditorListener> listeners =
        new ArrayList<CellEditorListener>();

    /** Creates a new instance of SchemaTreeCellEditor */
    public SchemaTreeCellEditor(
        Workbench workbench,
        JTree tree,
        DefaultTreeCellRenderer renderer,
        TreeCellEditor editor)
    {
        super(tree, renderer, editor);
        myClassLoader = this.getClass().getClassLoader();
    }

    public Component getTreeCellEditorComponent(
        JTree tree,
        Object value,
        boolean isSelected,
        boolean expanded,
        boolean leaf,
        int row)
    {
        if (value instanceof MondrianGuiDef.RelationOrJoin) {
            String valueClass = value.getClass().getName();
            String simpleName[] = valueClass.split("[$.]", 0);

            return super.getTreeCellEditorComponent(
                tree,
                simpleName[simpleName.length - 1],
                isSelected,
                expanded,
                leaf,
                row);
        } else {
            return null;
        }
    }

    public boolean isCellEditable(EventObject event) {
        return false;
    }

    protected void fireEditingStopped() {
        ChangeEvent ce = new ChangeEvent(this);
        for (int i = listeners.size() - 1; i >= 0; i--) {
            listeners.get(i).editingStopped(ce);
        }
    }

    public void addCellEditorListener(CellEditorListener l) {
        listeners.add(l);
    }

    public void removeCellEditorListener(CellEditorListener l) {
        listeners.remove(l);
    }

    public void setValueAt(JTree tree) {
        String retValue;
        MondrianGuiDef.RelationOrJoin relationObj = null;

        retValue = (String) getCellEditorValue();
        if (retValue.equals("Join")) {
            relationObj =
                new MondrianGuiDef.Join(
                    "", "",
                    new MondrianGuiDef.Table(
                        "", "Table 1", "", null),
                    "", "",
                    new MondrianGuiDef.Table(
                        "", "Table 2", "", null));
        } else if (retValue.equals("Table")) {
            relationObj = new MondrianGuiDef.Table("", "Table", "", null);
        }

        TreePath tpath = tree.getSelectionPath();
        if (tpath != null) {
            Object value = tpath.getLastPathComponent();
            TreePath parentpath = tpath.getParentPath();
            if (parentpath != null) {
                Object parent = parentpath.getLastPathComponent();
                if (parent instanceof MondrianGuiDef.Hierarchy) {
                    ((MondrianGuiDef.Hierarchy) parent).relation = relationObj;
                } else if (parent instanceof MondrianGuiDef.Closure) {
                    ((MondrianGuiDef.Closure) parent).table =
                        (MondrianGuiDef.Table)relationObj;
                } else if (parent instanceof MondrianGuiDef.Join) {
                    int indexOfChild =
                        tree.getModel().getIndexOfChild(parent, value);
                    switch (indexOfChild) {
                    case 0:
                        ((MondrianGuiDef.Join) parent).left = relationObj;
                        break;
                    case 1:
                        ((MondrianGuiDef.Join) parent).right = relationObj;
                        break;
                    }
                }
                tree.setSelectionPath(
                    parentpath.pathByAddingChild(relationObj));
            }
        }
    }

    public boolean stopCellEditing() {
        boolean retValue;

        setValueAt(super.tree);
        retValue = super.stopCellEditing();
        return retValue;
    }
}

// End SchemaTreeCellEditor.java
TOP

Related Classes of mondrian.gui.SchemaTreeCellEditor

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.