|
What this is
Other links
The source code/* * DockingOptionPane.java - Dockable window options panel * :tabSize=8:indentSize=8:noTabs=false: * :folding=explicit:collapseFolds=1: * * Copyright (C) 2000, 2003 Slava Pestov * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.gjt.sp.jedit.options; //{{{ Imports import javax.swing.table.*; import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.util.Vector; import org.gjt.sp.jedit.gui.*; import org.gjt.sp.jedit.msg.DockableWindowUpdate; import org.gjt.sp.jedit.*; //}}} //{{{ DockingOptionPane class public class DockingOptionPane extends AbstractOptionPane { //{{{ DockingOptionPane constructor public DockingOptionPane() { super("docking"); } //}}} //{{{ _init() method public void _init() { setLayout(new BorderLayout()); add(BorderLayout.CENTER,createWindowTableScroller()); } //}}} //{{{ _save() method public void _save() { windowModel.save(); } //}}} //{{{ Private members //{{{ Instance variables private JTable windowTable; private WindowTableModel windowModel; //}}} //{{{ createWindowTableScroller() method private JScrollPane createWindowTableScroller() { windowModel = createWindowModel(); windowTable = new JTable(windowModel); windowTable.getTableHeader().setReorderingAllowed(false); windowTable.setColumnSelectionAllowed(false); windowTable.setRowSelectionAllowed(false); windowTable.setCellSelectionEnabled(false); DockPositionCellRenderer comboBox = new DockPositionCellRenderer(); windowTable.setRowHeight(comboBox.getPreferredSize().height); TableColumn column = windowTable.getColumnModel().getColumn(1); column.setCellRenderer(comboBox); column.setCellEditor(new DefaultCellEditor(new DockPositionCellRenderer())); Dimension d = windowTable.getPreferredSize(); d.height = Math.min(d.height,50); JScrollPane scroller = new JScrollPane(windowTable); scroller.setPreferredSize(d); return scroller; } //}}} //{{{ createWindowModel() method private WindowTableModel createWindowModel() { return new WindowTableModel(); } //}}} //}}} //{{{ DockPositionCellRenderer class class DockPositionCellRenderer extends JComboBox implements TableCellRenderer { DockPositionCellRenderer() { super(new String[] { DockableWindowManager.FLOATING, DockableWindowManager.TOP, DockableWindowManager.LEFT, DockableWindowManager.BOTTOM, DockableWindowManager.RIGHT }); DockPositionCellRenderer.this.setRequestFocusEnabled(false); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { setSelectedItem(value); return this; } } //}}} } //}}} //{{{ WindowTableModel class class WindowTableModel extends AbstractTableModel { private Vector windows; //{{{ WindowTableModel constructor WindowTableModel() { windows = new Vector(); String[] dockables = DockableWindowManager.getRegisteredDockableWindows(); for(int i = 0; i < dockables.length; i++) { windows.addElement(new Entry(dockables[i])); } sort(); } //}}} //{{{ sort() method public void sort() { MiscUtilities.quicksort(windows,new WindowCompare()); fireTableDataChanged(); } //}}} //{{{ getColumnCount() method public int getColumnCount() { return 2; } //}}} //{{{ getRowCount() method public int getRowCount() { return windows.size(); } //}}} //{{{ getColumnClass() method public Class getColumnClass(int col) { switch(col) { case 0: case 1: return String.class; default: throw new InternalError(); } } //}}} //{{{ getValueAt() method public Object getValueAt(int row, int col) { Entry window = (Entry)windows.elementAt(row); switch(col) { case 0: return window.title; case 1: return window.dockPosition; default: throw new InternalError(); } } //}}} //{{{ isCellEditable() method public boolean isCellEditable(int row, int col) { return (col != 0); } //}}} //{{{ setValueAt() method public void setValueAt(Object value, int row, int col) { if(col == 0) return; Entry window = (Entry)windows.elementAt(row); switch(col) { case 1: window.dockPosition = (String)value; break; default: throw new InternalError(); } fireTableRowsUpdated(row,row); } //}}} //{{{ getColumnName() method public String getColumnName(int index) { switch(index) { case 0: return jEdit.getProperty("options.docking.title"); case 1: return jEdit.getProperty("options.docking.dockPosition"); default: throw new InternalError(); } } //}}} //{{{ save() method public void save() { for(int i = 0; i < windows.size(); i++) { ((Entry)windows.elementAt(i)).save(); } } //}}} //{{{ Entry class class Entry { String name; String title; String dockPosition; Entry(String name) { this.name = name; title = jEdit.getProperty(name + ".title"); if(title == null) title = name; dockPosition = jEdit.getProperty(name + ".dock-position"); if(dockPosition == null) dockPosition = DockableWindowManager.FLOATING; } void save() { jEdit.setProperty(name + ".dock-position",dockPosition); } } //}}} //{{{ WindowCompare class class WindowCompare implements MiscUtilities.Compare { public int compare(Object obj1, Object obj2) { Entry e1 = (Entry)obj1; Entry e2 = (Entry)obj2; return MiscUtilities.compareStrings( e1.title,e2.title,true); } } //}}} } //}}} |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.