blob: 1ccb498680949b6dd0123002ad93f292e01bcb7e [file] [log] [blame]
/*
* Copyright (c) 2009, Tony Kohar. All Rights Reserved.
*
* 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.apache.zest.envisage.detail;
import java.awt.BorderLayout;
import java.util.ArrayList;
import java.util.ResourceBundle;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableColumnModel;
import org.apache.zest.api.composite.CompositeDescriptor;
import org.apache.zest.api.entity.EntityDescriptor;
import org.apache.zest.api.object.ObjectDescriptor;
import org.apache.zest.api.service.ServiceDescriptor;
import org.apache.zest.api.value.ValueDescriptor;
import org.apache.zest.envisage.util.TableRow;
import org.apache.zest.tools.model.descriptor.EntityDetailDescriptor;
import org.apache.zest.tools.model.descriptor.ImportedServiceCompositeDescriptor;
import org.apache.zest.tools.model.descriptor.ImportedServiceDetailDescriptor;
import org.apache.zest.tools.model.descriptor.ObjectDetailDescriptor;
import org.apache.zest.tools.model.descriptor.ServiceDetailDescriptor;
import org.apache.zest.tools.model.descriptor.TransientDetailDescriptor;
import org.apache.zest.tools.model.descriptor.ValueDetailDescriptor;
import static org.apache.zest.functional.Iterables.first;
/**
* Implementation of General DetailPane
*/
/* package */ final class GeneralPane
extends DetailPane
{
private static final ResourceBundle BUNDLE = ResourceBundle.getBundle( GeneralPane.class.getName() );
private JPanel contentPane;
private JTable table;
private final GeneralTableModel tableModel;
/* package */ 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 );
}
private void clear()
{
tableModel.clear();
}
@Override
protected 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;
}
private static class GeneralTableModel
extends AbstractTableModel
{
/**
* the column names for this model
*/
private static final String[] COLUMN_NAMES =
{
BUNDLE.getString( "Name.Column" ),
BUNDLE.getString( "Value.Column" )
};
private final ArrayList<TableRow> rows;
private final String nameRow = "name";
private final String classRow = "class";
private final String visibilityRow = "visibility";
private final String moduleRow = "module";
private final String layerRow = "layer";
private GeneralTableModel()
{
rows = new ArrayList<>();
}
private void reload( Object objectDesciptor )
{
if( objectDesciptor instanceof ServiceDetailDescriptor )
{
ServiceDescriptor descriptor = ( (ServiceDetailDescriptor) objectDesciptor ).descriptor();
Class<?> type = first( descriptor.types() );
rows.add( new TableRow( 2, nameRow, type.getSimpleName() ) );
rows.add( new TableRow( 2, classRow, type.getName() ) );
rows.add( new TableRow( 2, visibilityRow, descriptor.visibility().toString() ) );
rows.add( new TableRow( 2, moduleRow, ( (ServiceDetailDescriptor) objectDesciptor ).module() ) );
rows.add( new TableRow( 2, layerRow, ( (ServiceDetailDescriptor) objectDesciptor ).module().layer() ) );
rows.add( new TableRow( 2, "startup", ( (ServiceDetailDescriptor) objectDesciptor ).descriptor().isInstantiateOnStartup() ) );
}
else if( objectDesciptor instanceof ImportedServiceDetailDescriptor )
{
ImportedServiceCompositeDescriptor descriptor = ( (ImportedServiceDetailDescriptor) objectDesciptor ).descriptor();
rows.add( new TableRow( 2, nameRow, descriptor.primaryType().getSimpleName() ) );
rows.add( new TableRow( 2, classRow, descriptor.primaryType().getName() ) );
rows.add( new TableRow( 2, visibilityRow, descriptor.visibility().toString() ) );
rows.add( new TableRow( 2, moduleRow, ( (ImportedServiceDetailDescriptor) objectDesciptor ).module() ) );
rows.add( new TableRow( 2, 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, nameRow, type.getSimpleName() ) );
rows.add( new TableRow( 2, classRow, type.getName() ) );
rows.add( new TableRow( 2, visibilityRow, descriptor.visibility().toString() ) );
rows.add( new TableRow( 2, moduleRow, ( (EntityDetailDescriptor) objectDesciptor ).module() ) );
rows.add( new TableRow( 2, 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, nameRow, type.getSimpleName() ) );
rows.add( new TableRow( 2, classRow, type.getName() ) );
rows.add( new TableRow( 2, visibilityRow, descriptor.visibility().toString() ) );
rows.add( new TableRow( 2, moduleRow, ( (ObjectDetailDescriptor) objectDesciptor ).module() ) );
rows.add( new TableRow( 2, layerRow, ( (ObjectDetailDescriptor) objectDesciptor ).module().layer() ) );
}
else if( objectDesciptor instanceof TransientDetailDescriptor )
{
CompositeDescriptor descriptor = ( (TransientDetailDescriptor) objectDesciptor ).descriptor();
Class<?> type = first( descriptor.types() );
rows.add( new TableRow( 2, nameRow, type.getSimpleName() ) );
rows.add( new TableRow( 2, classRow, type.getName() ) );
rows.add( new TableRow( 2, visibilityRow, descriptor.visibility().toString() ) );
rows.add( new TableRow( 2, moduleRow, ( (TransientDetailDescriptor) objectDesciptor ).module() ) );
rows.add( new TableRow( 2, layerRow, ( (TransientDetailDescriptor) objectDesciptor ).module().layer() ) );
}
fireTableDataChanged();
}
@Override
public Object getValueAt( int rowIndex, int columnIndex )
{
TableRow row = this.rows.get( rowIndex );
return row.get( columnIndex );
}
private void clear()
{
rows.clear();
fireTableDataChanged();
}
@Override
public int getColumnCount()
{
return COLUMN_NAMES.length;
}
@Override
public String getColumnName( int col )
{
return COLUMN_NAMES[ col];
}
@Override
public int getRowCount()
{
return rows.size();
}
}
}