Skip to content

Commit

Permalink
[Mondrian] more workbench updates. added a property sheet
Browse files Browse the repository at this point in the history
[git-p4: depot-paths = "//open/mondrian/": change = 177]
  • Loading branch information
banksean committed Oct 3, 2002
1 parent 4fd87dc commit 851d062
Show file tree
Hide file tree
Showing 5 changed files with 257 additions and 2 deletions.
Binary file added images/property24.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
85 changes: 85 additions & 0 deletions src/main/mondrian/gui/PropertyTableModel.java
@@ -0,0 +1,85 @@
/*
* PropertyTableModel.java
*
* Created on October 2, 2002, 7:02 PM
*/

package mondrian.gui;

import java.lang.reflect.*;
import java.beans.*;
import java.util.*;

/**
*
* @author sean
*/
public class PropertyTableModel extends javax.swing.table.AbstractTableModel {
String[] propertyNames;
Object target;

public PropertyTableModel(Object t, String[] pNames) {
super();

propertyNames = pNames;
target = t;
}

public String getColumnName(int i) {
if (i == 0) {
return "Property";
} else if (i==1) {
return "Value";
}

return "?";
}

/** Returns the number of columns in the model. A
* <code>JTable</code> uses this method to determine how many columns it
* should create and display by default.
*
* @return the number of columns in the model
* @see #getRowCount
*
*/
public int getColumnCount() {
return 2; //that's 'Property' and 'Value'
}

/** Returns the number of rows in the model. A
* <code>JTable</code> uses this method to determine how many rows it
* should display. This method should be quick, as it
* is called frequently during rendering.
*
* @return the number of rows in the model
* @see #getColumnCount
*
*/
public int getRowCount() {
return propertyNames.length;
}

/** Returns the value for the cell at <code>columnIndex</code> and
* <code>rowIndex</code>.
*
* @param rowIndex the row whose value is to be queried
* @param columnIndex the column whose value is to be queried
* @return the value Object at the specified cell
*
*/
public Object getValueAt(int rowIndex, int columnIndex) {
if (columnIndex == 0) {
return propertyNames[rowIndex];
} else {
try {
Field f = target.getClass().getField(propertyNames[rowIndex]);
return f.get(target);
} catch (Exception ex) {
ex.printStackTrace();
return "#ERROR";
}
}
}

}
149 changes: 147 additions & 2 deletions src/main/mondrian/gui/SchemaExplorer.java
Expand Up @@ -6,13 +6,14 @@

package mondrian.gui;

import javax.swing.event.*;
import mondrian.olap.*;

/**
*
* @author sean
*/
public class SchemaExplorer extends javax.swing.JPanel {
public class SchemaExplorer extends javax.swing.JPanel implements TreeSelectionListener {
MondrianDef.Schema schema;
SchemaTreeModel model;
SchemaTreeCellRenderer renderer;
Expand All @@ -27,8 +28,10 @@ public SchemaExplorer(MondrianDef.Schema s) {
this.schema = s;
renderer = new SchemaTreeCellRenderer();
model = new SchemaTreeModel(schema);

tree.setModel(model);
tree.setCellRenderer(renderer);
tree.addTreeSelectionListener(this);

}

Expand All @@ -38,21 +41,163 @@ public SchemaExplorer(MondrianDef.Schema s) {
* always regenerated by the Form Editor.
*/
private void initComponents() {//GEN-BEGIN:initComponents
jSplitPane1 = new javax.swing.JSplitPane();
jPanel1 = new javax.swing.JPanel();
jScrollPane2 = new javax.swing.JScrollPane();
propertyTable = new javax.swing.JTable();
jPanel2 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
tree = new javax.swing.JTree();

setLayout(new java.awt.BorderLayout());

jSplitPane1.setDividerLocation(200);
jSplitPane1.setToolTipText("null");
jPanel1.setLayout(new java.awt.BorderLayout());

propertyTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {

},
new String [] {
"Property", "Value"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.Object.class
};
boolean[] canEdit = new boolean [] {
false, true
};

public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}

public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
jScrollPane2.setViewportView(propertyTable);

jPanel1.add(jScrollPane2, java.awt.BorderLayout.CENTER);

jSplitPane1.setRightComponent(jPanel1);

jPanel2.setLayout(new java.awt.BorderLayout());

jScrollPane1.setViewportView(tree);

add(jScrollPane1, java.awt.BorderLayout.CENTER);
jPanel2.add(jScrollPane1, java.awt.BorderLayout.CENTER);

jSplitPane1.setLeftComponent(jPanel2);

add(jSplitPane1, java.awt.BorderLayout.CENTER);

}//GEN-END:initComponents

/**
* Called whenever the value of the selection changes.
* @param e the event that characterizes the change.
*
*/
public void valueChanged(TreeSelectionEvent e) {
Object o = e.getPath().getLastPathComponent();
if (o instanceof MondrianDef.Column) {
MondrianDef.Column c = (MondrianDef.Column)o;
PropertyTableModel ptm = new PropertyTableModel(c, new String[]{"name", "table"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.Cube) {
MondrianDef.Cube c = (MondrianDef.Cube)o;
PropertyTableModel ptm = new PropertyTableModel(c, new String[]{"name", "factSchema", "factTable"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.Dimension) {
MondrianDef.Dimension d = (MondrianDef.Dimension)o;
PropertyTableModel ptm = new PropertyTableModel(d, new String[]{"name", "foreignKey"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.DimensionUsage) {
MondrianDef.DimensionUsage du = (MondrianDef.DimensionUsage)o;
PropertyTableModel ptm = new PropertyTableModel(du, new String[]{"name", "foreignKey", "source"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.ExpressionView) {
MondrianDef.ExpressionView ev = (MondrianDef.ExpressionView)o;
PropertyTableModel ptm = new PropertyTableModel(ev, new String[]{"name", "foreignKey", "source"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.Hierarchy) {
MondrianDef.Hierarchy h = (MondrianDef.Hierarchy)o;
PropertyTableModel ptm = new PropertyTableModel(h,
new String[]{"hasAll", "defaultMember", "memberReaderClass", "primaryKey", "primaryKeyTable", "relation"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.Join) {
MondrianDef.Join j = (MondrianDef.Join)o;
PropertyTableModel ptm = new PropertyTableModel(j,
new String[]{"left", "leftAlias", "leftKey", "right", "rightAlias", "rightKey"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.Level) {
MondrianDef.Level l = (MondrianDef.Level)o;
PropertyTableModel ptm = new PropertyTableModel(l,
new String[]{"name", "column", "nameExp", "ordinalColumn", "ordinalExp", "table", "type", "uniqueMembers"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.Measure) {
MondrianDef.Measure m = (MondrianDef.Measure)o;
PropertyTableModel ptm = new PropertyTableModel(m,
new String[]{"name", "aggregator", "column", "formatString"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.Parameter) {
MondrianDef.Parameter p = (MondrianDef.Parameter)o;
PropertyTableModel ptm = new PropertyTableModel(p,
new String[]{"name", "value"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.Property) {
MondrianDef.Property p = (MondrianDef.Property)o;
PropertyTableModel ptm = new PropertyTableModel(p,
new String[]{"name", "column", "type"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.SQL) {
MondrianDef.SQL s = (MondrianDef.SQL)o;
PropertyTableModel ptm = new PropertyTableModel(s,
new String[]{"cdata", "dialect"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.Table) {
MondrianDef.Table t = (MondrianDef.Table)o;
PropertyTableModel ptm = new PropertyTableModel(t,
new String[]{"name", "alias", "schema"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.View) {
MondrianDef.View v = (MondrianDef.View)o;
PropertyTableModel ptm = new PropertyTableModel(v,
new String[]{"alias"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.VirtualCube) {
MondrianDef.VirtualCube vc = (MondrianDef.VirtualCube)o;
PropertyTableModel ptm = new PropertyTableModel(vc,
new String[]{"name"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.VirtualCubeDimension) {
MondrianDef.VirtualCubeDimension vc = (MondrianDef.VirtualCubeDimension)o;
PropertyTableModel ptm = new PropertyTableModel(vc,
new String[]{"cubeName"});
propertyTable.setModel(ptm);
} else if (o instanceof MondrianDef.VirtualCubeMeasure) {
MondrianDef.VirtualCubeMeasure vc = (MondrianDef.VirtualCubeMeasure)o;
PropertyTableModel ptm = new PropertyTableModel(vc,
new String[]{"name", "cubeName"});
propertyTable.setModel(ptm);
} else {
PropertyTableModel ptm = new PropertyTableModel(o, new String[]{});
propertyTable.setModel(ptm);
}
}


// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTable propertyTable;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTree tree;
private javax.swing.JSplitPane jSplitPane1;
// End of variables declaration//GEN-END:variables

}
1 change: 1 addition & 0 deletions src/main/mondrian/gui/SchemaTreeCellRenderer.java
Expand Up @@ -73,6 +73,7 @@ public Component getTreeCellRendererComponent(
setText(((MondrianDef.Parameter)value).name);
} else if (value instanceof MondrianDef.Property) {
setText(((MondrianDef.Property)value).name);
super.setIcon(new ImageIcon("images/property24.gif"));
} else if (value instanceof MondrianDef.Relation) {
setText("Relation");
//setText(((MondrianDef.Relation)value).name);
Expand Down
24 changes: 24 additions & 0 deletions src/main/mondrian/gui/SchemaTreeModel.java
Expand Up @@ -102,6 +102,16 @@ public Object getChild(Object parent, int index) {
} else {
return null;
}
} else if (parent instanceof MondrianDef.Parameter) {
MondrianDef.Parameter p = (MondrianDef.Parameter)parent;
return null;
} else if (parent instanceof MondrianDef.Level) {
MondrianDef.Level l = (MondrianDef.Level)parent;
if (l.properties.length > index) {
return l.properties[index];
} else {
return null;
}
} else {
return null;
}
Expand Down Expand Up @@ -135,6 +145,9 @@ public int getChildCount(Object parent) {
} else if (parent instanceof MondrianDef.Hierarchy) {
MondrianDef.Hierarchy h = (MondrianDef.Hierarchy)parent;
return h.memberReaderParameters.length + h.levels.length;
} else if (parent instanceof MondrianDef.Level) {
MondrianDef.Level l = (MondrianDef.Level)parent;
return l.properties.length;
} else {
return 0;
}
Expand Down Expand Up @@ -243,6 +256,17 @@ public int getIndexOfChild(Object parent, Object child) {
} else {
return -1;
}
} else if (parent instanceof MondrianDef.Level) {
MondrianDef.Level l = (MondrianDef.Level)parent;
if (child instanceof MondrianDef.Property) {
for (int i=0; i<l.properties.length; i++) {
if (l.properties[i].equals(child))
return i;
}
return -1;
} else {
return -1;
}
} else {
return -1;
}
Expand Down

0 comments on commit 851d062

Please sign in to comment.