/* Copyright 2009 Tonny Kohar. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.qi4j.envisage.detail; import java.awt.*; import java.util.ArrayList; import java.util.ResourceBundle; import javax.swing.*; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableColumnModel; import org.qi4j.api.composite.CompositeDescriptor; import org.qi4j.api.entity.EntityDescriptor; import org.qi4j.api.object.ObjectDescriptor; import org.qi4j.api.service.ServiceDescriptor; import org.qi4j.api.value.ValueDescriptor; import org.qi4j.envisage.util.TableRow; import org.qi4j.tools.model.descriptor.*; import static org.qi4j.functional.Iterables.first; /** * Implementation of General DetailPane */ public class GeneralPane extends DetailPane { protected ResourceBundle bundle = ResourceBundle.getBundle( this.getClass().getName() ); private JPanel contentPane; private JTable table; private GeneralTableModel tableModel; public GeneralPane( DetailModelPane detailModelPane ) { super( detailModelPane ); this.setLayout( new BorderLayout() ); this.add( contentPane, BorderLayout.CENTER ); tableModel = new GeneralTableModel(); table.setModel( tableModel ); TableColumnModel columnModel = table.getColumnModel(); columnModel.getColumn( 0 ).setPreferredWidth( 90 ); columnModel.getColumn( 1 ).setPreferredWidth( 550 ); } protected void clear() { tableModel.clear(); } @Override public void setDescriptor( Object objectDesciptor ) { clear(); tableModel.reload( objectDesciptor ); } { // GUI initializer generated by IntelliJ IDEA GUI Designer // >>> IMPORTANT!! <<< // DO NOT EDIT OR ADD ANY CODE HERE! $$$setupUI$$$(); } /** * Method generated by IntelliJ IDEA GUI Designer * >>> IMPORTANT!! <<< * DO NOT edit this method OR call it in your code! * */ private void $$$setupUI$$$() { contentPane = new JPanel(); contentPane.setLayout( new BorderLayout( 0, 0 ) ); final JScrollPane scrollPane1 = new JScrollPane(); contentPane.add( scrollPane1, BorderLayout.CENTER ); table = new JTable(); scrollPane1.setViewportView( table ); } public JComponent $$$getRootComponent$$$() { return contentPane; } public class GeneralTableModel extends AbstractTableModel { /** * the column names for this model */ protected String[] columnNames = { bundle.getString( "Name.Column" ), bundle.getString( "Value.Column" ) }; protected ArrayList<TableRow> rows; protected String nameRow = "name"; protected String classRow = "class"; protected String visibilityRow = "visibility"; protected String moduleRow = "module"; protected String layerRow = "layer"; public GeneralTableModel() { rows = new ArrayList<TableRow>(); } public void reload( Object objectDesciptor ) { if( objectDesciptor instanceof ServiceDetailDescriptor ) { ServiceDescriptor descriptor = ( (ServiceDetailDescriptor) objectDesciptor ).descriptor(); Class<?> type = first( descriptor.types() ); rows.add( new TableRow( 2, new Object[]{ nameRow, type.getSimpleName() } ) ); rows.add( new TableRow( 2, new Object[]{ classRow, type.getName() } ) ); rows.add( new TableRow( 2, new Object[]{ visibilityRow, descriptor.visibility().toString() } ) ); rows.add( new TableRow( 2, new Object[]{ moduleRow, ( (ServiceDetailDescriptor) objectDesciptor ).module() } ) ); rows.add( new TableRow( 2, new Object[]{ layerRow, ( (ServiceDetailDescriptor) objectDesciptor ).module().layer() } ) ); rows.add( new TableRow( 2, new Object[]{ "startup", ( (ServiceDetailDescriptor) objectDesciptor ).descriptor().isInstantiateOnStartup() } ) ); } else if( objectDesciptor instanceof ImportedServiceDetailDescriptor ) { ImportedServiceCompositeDescriptor descriptor = ( (ImportedServiceDetailDescriptor) objectDesciptor ).descriptor(); rows.add( new TableRow( 2, new Object[]{ nameRow, descriptor.primaryType().getSimpleName() } ) ); rows.add( new TableRow( 2, new Object[]{ classRow, descriptor.primaryType().getName() } ) ); rows.add( new TableRow( 2, new Object[]{ visibilityRow, descriptor.visibility().toString() } ) ); rows.add( new TableRow( 2, new Object[]{ moduleRow, ( (ImportedServiceDetailDescriptor) objectDesciptor ).module() } ) ); rows.add( new TableRow( 2, new Object[]{ layerRow, ( (ImportedServiceDetailDescriptor) objectDesciptor ).module().layer() } ) ); } else if( objectDesciptor instanceof EntityDetailDescriptor ) { EntityDescriptor descriptor = ( (EntityDetailDescriptor) objectDesciptor ).descriptor(); Class<?> type = first( descriptor.types() ); rows.add( new TableRow( 2, new Object[]{ nameRow, type.getSimpleName() } ) ); rows.add( new TableRow( 2, new Object[]{ classRow, type.getName() } ) ); rows.add( new TableRow( 2, new Object[]{ visibilityRow, descriptor.visibility().toString() } ) ); rows.add( new TableRow( 2, new Object[]{ moduleRow, ( (EntityDetailDescriptor) objectDesciptor ).module() } ) ); rows.add( new TableRow( 2, new Object[]{ layerRow, ( (EntityDetailDescriptor) objectDesciptor ).module().layer() } ) ); } else if( objectDesciptor instanceof ValueDetailDescriptor ) { ValueDescriptor descriptor = ( (ValueDetailDescriptor) objectDesciptor ).descriptor(); Class<?> type = first( descriptor.types() ); rows.add( new TableRow( 2, new Object[]{ nameRow, type.getSimpleName() } ) ); rows.add( new TableRow( 2, new Object[]{ classRow, type.getName() } ) ); rows.add( new TableRow( 2, new Object[]{ visibilityRow, descriptor.visibility().toString() } ) ); rows.add( new TableRow( 2, new Object[]{ moduleRow, ( (ValueDetailDescriptor) objectDesciptor ).module() } ) ); rows.add( new TableRow( 2, new Object[]{ layerRow, ( (ValueDetailDescriptor) objectDesciptor ).module().layer() } ) ); } else if( objectDesciptor instanceof ObjectDetailDescriptor ) { ObjectDescriptor descriptor = ( (ObjectDetailDescriptor) objectDesciptor ).descriptor(); Class<?> type = first( descriptor.types() ); rows.add( new TableRow( 2, new Object[]{ nameRow, type.getSimpleName() } ) ); rows.add( new TableRow( 2, new Object[]{ classRow, type.getName() } ) ); rows.add( new TableRow( 2, new Object[]{ visibilityRow, descriptor.visibility().toString() } ) ); rows.add( new TableRow( 2, new Object[]{ moduleRow, ( (ObjectDetailDescriptor) objectDesciptor ).module() } ) ); rows.add( new TableRow( 2, new Object[]{ layerRow, ( (ObjectDetailDescriptor) objectDesciptor ).module().layer() } ) ); } else if( objectDesciptor instanceof CompositeDetailDescriptor ) { CompositeDescriptor descriptor = ( (CompositeDetailDescriptor) objectDesciptor ).descriptor(); Class<?> type = first( descriptor.types() ); rows.add( new TableRow( 2, new Object[]{ nameRow, type.getSimpleName() } ) ); rows.add( new TableRow( 2, new Object[]{ classRow, type.getName() } ) ); rows.add( new TableRow( 2, new Object[]{ visibilityRow, descriptor.visibility().toString() } ) ); rows.add( new TableRow( 2, new Object[]{ moduleRow, ( (CompositeDetailDescriptor) objectDesciptor ).module() } ) ); rows.add( new TableRow( 2, new Object[]{ layerRow, ( (CompositeDetailDescriptor) objectDesciptor ).module().layer() } ) ); } fireTableDataChanged(); } @Override public Object getValueAt( int rowIndex, int columnIndex ) { TableRow row = this.rows.get( rowIndex ); return row.get( columnIndex ); } public void clear() { rows.clear(); fireTableDataChanged(); } @Override public int getColumnCount() { return columnNames.length; } @Override public String getColumnName( int col ) { return columnNames[ col ]; } @Override public int getRowCount() { return rows.size(); } } }