File |
Line |
net\sourceforge\vigilog\ui\colorfilter\ColorFiltersDialog.java |
487 |
net\sourceforge\vigilog\ui\colorfilter\ColorFiltersPanel.java |
494 |
editPanelUpdated();
}
}
private class AddGroupAction extends AbstractAction
{
public AddGroupAction()
{
super( bundle.getString( "color.filter.group.add" ), new ImageIcon( AddGroupAction.class.getResource( "folder-new.png" ) ) );
}
public void actionPerformed( ActionEvent e )
{
ColorFilterGroup filterGroup = new ColorFilterGroup( bundle.getString( "color.filter.unnamed" ) );
DefaultMutableTreeTableNode node = new DefaultMutableTreeTableNode( filterGroup );
ColorFiltersTreeTableModel tableModel = (ColorFiltersTreeTableModel)treeTable.getTreeTableModel();
DefaultMutableTreeTableNode root = (DefaultMutableTreeTableNode)tableModel.getRoot();
tableModel.insertNodeInto( node, root, root.getChildCount() );
treeTable.getTreeSelectionModel().setSelectionPath( new TreePath( tableModel.getPathToRoot( node ) ) );
}
}
private class AddFilterAction extends AbstractAction
{
public AddFilterAction()
{
super( bundle.getString( "color.filter.add" ), new ImageIcon( AddFilterAction.class.getResource( "document-new.png" ) ) );
}
public void actionPerformed( ActionEvent e )
{
LogEntryColorFilter filter = new LogEntryColorFilter();
filter.setName( bundle.getString( "color.filter.unnamed" ) );
filter.setColor( Color.RED );
DefaultMutableTreeTableNode node = new DefaultMutableTreeTableNode( filter );
TreePath selectionPath = treeTable.getTreeSelectionModel().getSelectionPath();
ColorFiltersTreeTableModel tableModel = (ColorFiltersTreeTableModel)treeTable.getTreeTableModel();
DefaultMutableTreeTableNode groupNode = (DefaultMutableTreeTableNode)selectionPath.getLastPathComponent();
ColorFilterGroup filterGroup = (ColorFilterGroup)groupNode.getUserObject();
filterGroup.addColorFilter( filter );
tableModel.insertNodeInto( node, groupNode, groupNode.getChildCount() );
treeTable.getTreeSelectionModel().setSelectionPath( new TreePath( tableModel.getPathToRoot( node ) ) );
}
}
private class DeleteAction extends AbstractAction
{
public DeleteAction()
{
super( bundle.getString( "button.remove" ), new ImageIcon( DeleteAction.class.getResource( "user-trash.png" ) ) );
}
public void actionPerformed( ActionEvent e )
{
TreePath selectionPath = treeTable.getTreeSelectionModel().getSelectionPath();
if (selectionPath != null)
{
ColorFiltersTreeTableModel tableModel = (ColorFiltersTreeTableModel)treeTable.getTreeTableModel();
DefaultMutableTreeTableNode toBeDeletedNode = (DefaultMutableTreeTableNode)selectionPath.getLastPathComponent();
// find out which node to select next
DefaultMutableTreeTableNode parentNode = (DefaultMutableTreeTableNode)toBeDeletedNode.getParent();
if (parentNode.getUserObject() instanceof ColorFilterGroup)
{
ColorFilterGroup group = (ColorFilterGroup)parentNode.getUserObject();
group.removeColorFilter( (LogEntryColorFilter)toBeDeletedNode.getUserObject() );
}
TreeTableNode nextToBeSelected = getNextToBeSelected( tableModel, toBeDeletedNode, parentNode );
tableModel.removeNodeFromParent( toBeDeletedNode );
if (nextToBeSelected == tableModel.getRoot())
{
updateViewForNoSelection();
}
else
{
treeTable.getTreeSelectionModel().setSelectionPath(
new TreePath( tableModel.getPathToRoot( nextToBeSelected ) ) );
}
}
}
/**
* Find the node to select after deletion
*
* @param tableModel the table model
* @param toBeDeletedNode the node that needs to be deleted
* @param parentNode the parent node of the node that will need to be deleted
* @return the node to select after deletion
*/
private TreeTableNode getNextToBeSelected( ColorFiltersTreeTableModel tableModel, MutableTreeTableNode toBeDeletedNode, DefaultMutableTreeTableNode parentNode )
{
int currIdx = tableModel.getIndexOfChild( parentNode, toBeDeletedNode );
TreeTableNode nextToBeSelected = null;
if (parentNode.getChildCount() > currIdx)
{
nextToBeSelected = parentNode.getChildAt( currIdx );
}
if (nextToBeSelected == null && currIdx > 0)
{
nextToBeSelected = parentNode.getChildAt( currIdx + 1 );
}
else
{
nextToBeSelected = toBeDeletedNode.getParent();
}
return nextToBeSelected;
}
}
private static class ColorColumnHighlighter extends AbstractHighlighter
{
protected Component doHighlight( Component component, ComponentAdapter componentAdapter )
{
if (componentAdapter.column == 1)
{
Color c = (Color)componentAdapter.getValueAt( componentAdapter.row, componentAdapter.column );
component.setBackground( c );
component.setForeground( c );
}
return component;
}
}
|
File |
Line |
net\sourceforge\vigilog\ui\colorfilter\ColorFiltersDialog.java |
178 |
net\sourceforge\vigilog\ui\colorfilter\ColorFiltersPanel.java |
188 |
result.add( editPanelWrapper, BorderLayout.EAST );
return result;
}
private JPanel createColorFiltersPanel( EventList<ColorFilterGroup> colorFilterGroups )
{
JPanel result = new JPanel( new BorderLayout( 0, 7 ) );
TreeTableModel model = new ColorFiltersTreeTableModel( colorFilterGroups );
treeTable = new JXTreeTable( model );
treeTable.setClosedIcon( new ImageIcon( ColorFiltersDialog.class.getResource( "folder.png" ) ) );
treeTable.setOpenIcon( new ImageIcon( ColorFiltersDialog.class.getResource( "folder-open.png" ) ) );
treeTable.setLeafIcon( new ImageIcon( ColorFiltersDialog.class.getResource( "text-x-generic.png" ) ) );
treeTable.setTreeCellRenderer( new ColorFiltersTreeCellRenderer() );
treeTable.addHighlighter( new ColorColumnHighlighter() );
treeTable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
treeTable.getTreeSelectionModel().addTreeSelectionListener( new ColorFiltersListSelectionListener() );
result.add( createFilterButtons(), BorderLayout.NORTH );
JScrollPane pane = new JScrollPane( treeTable );
pane.setPreferredSize( new Dimension( 50, 220 ) );
result.add( pane, BorderLayout.CENTER );
return result;
}
private JPanel createFilterButtons()
{
JPanel result = new JPanel( new FlowLayout( FlowLayout.LEFT, 0, 0 ) );
addGroupButton = new JButton( new AddGroupAction() );
result.add( addGroupButton );
result.add( Box.createHorizontalStrut( 5 ) );
addFilterButton = new JButton( new AddFilterAction() );
addFilterButton.setEnabled( false );
result.add( addFilterButton );
result.add( Box.createHorizontalStrut( 5 ) );
deleteButton = new JButton( new DeleteAction() );
deleteButton.setEnabled( false );
result.add( deleteButton );
GuiUtilities.makeButtonWidthEqual( addGroupButton, addFilterButton, deleteButton );
return result;
}
/*
private Component createButtonPanel()
{
JPanel result = new JPanel();
result.setLayout( new FlowLayout( FlowLayout.RIGHT ) );
JButton okButton = new JButton( bundle.getString( "button.ok" ) );
okButton.addActionListener( new OkActionListener() );
result.add( okButton );
JButton cancelButton = new JButton( bundle.getString( "button.cancel" ) );
cancelButton.addActionListener( new CancelActionListener() );
result.add( cancelButton );
getRootPane().setDefaultButton( okButton );
GuiUtilities.makeButtonWidthEqual( okButton, cancelButton );
return result;
}
*/
private void checkColorFilterPanelForChanges( DefaultMutableTreeTableNode mutableTreeTableNode )
|
File |
Line |
net\sourceforge\vigilog\ui\colorfilter\ColorFiltersDialog.java |
85 |
net\sourceforge\vigilog\ui\colorfilter\ColorFiltersPanel.java |
82 |
List<ColorFilterGroup> result = null;
if (colorFilterGroups != null)
{
TableModel tableModel = treeTable.getModel();
int rowCount = tableModel.getRowCount();
result = new ArrayList<ColorFilterGroup>( rowCount );
for (int i = 0; i < rowCount; i++)
{
DefaultMutableTreeTableNode node = (DefaultMutableTreeTableNode)tableModel.getValueAt( i, 2 );
if (node.getUserObject() instanceof ColorFilterGroup)
{
result.add( (ColorFilterGroup)node.getUserObject() );
}
}
}
return result;
}
/**
* Selects thte given filter in the dialog
*
* @param filter the filter to select
*/
public void selectFilter( LogEntryColorFilter filter )
{
// First expand all items to make sure we get all rows
treeTable.expandAll();
int rowCount = treeTable.getModel().getRowCount();
for (int i = 0; i < rowCount; i++)
{
DefaultMutableTreeTableNode node = (DefaultMutableTreeTableNode)treeTable.getModel().getValueAt( i, 2 );
if (node != null && node.getUserObject().equals( filter ))
{
// Got the correct filter, let's select it
TreePath treePath = calculateTreePath( node );
treeTable.collapseAll();
treeTable.expandPath( treePath );
treeTable.getTreeSelectionModel().setSelectionPath( treePath );
}
}
}
|