protected void initializeColumns() { VisibleListener visibleListener = new VisibleListener(); PositionTableColumn[] columns = new PositionTableColumn[predefinedColumns.size()]; for (int i = 0; i < predefinedColumns.size(); i++) { PositionTableColumn column = predefinedColumns.get(i); int index = preferences.getInt(createOrderKey(column.getName()), i); if(columns[index] == null) columns[index] = column; else if (columns[i] == null) columns[i] = column; else if(column.isVisible()) column.toggleVisibility(); column.addPropertyChangeListener(visibleListener); } for (PositionTableColumn column : columns) { if (column != null && column.isVisible()) addColumn(column); } }
protected void initializeShowColumn(JMenu showColumnMenu) { VisibleListener visibleListener = new VisibleListener(); for (PositionTableColumn column : columnModel.getPreparedColumns()) { column.addPropertyChangeListener(visibleListener); String menuItemText = RouteConverter.getBundle().getString(column.getName()); ToggleColumnVisibilityAction action = new ToggleColumnVisibilityAction(column); actionManager.register(createShowKey(column.getName()), action); JCheckBoxMenuItem popupItem = new JCheckBoxMenuItem(menuItemText); popupItem.setModel(new PositionTableColumnButtonModel(column, action)); popupMenu.add(popupItem); if (showColumnMenu != null) { JCheckBoxMenuItem menuBarItem = new JCheckBoxMenuItem(menuItemText); menuBarItem.setModel(new PositionTableColumnButtonModel(column, action)); setMnemonic(menuBarItem, column.getName() + MNEMONIC_SUFFIX); showColumnMenu.add(menuBarItem); } } }
public PositionTableColumnButtonModel(final PositionTableColumn column, final Action action) { addActionListener(action); action.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { setEnabled(action.isEnabled()); } }); column.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { setSelected(column.isVisible()); } }); setEnabled(action.isEnabled()); setSelected(column.isVisible()); } }