import
java.awt.*;
import
javax.swing.*;
import
javax.swing.event.*;
import
com.marinilli.b1.ac.pres.*;
import
com.marinilli.b1.ac.pres.ui.memory.*;
import
com.marinilli.b1.ac.util.*;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
/**
*
*
* @author Toygar Dündaralp
* tdundaralp@gmail.com
*
*
*/
public
class
ConfigurationDialog
extends
JDialog
implements
ActionListener {
JPanel panel1 =
new
JPanel();
JSplitPane jSplitPane =
new
JSplitPane();
MenuList list;
OkCancelPane okCancelPane =
new
OkCancelPane(
true
);
public
ConfigurationDialog(String title, Configurable[] cv) {
this
(ServiceManager.getMainFrame(), title, cv);
}
private
ConfigurationDialog(Frame frame,
String title,
Configurable[] cv) {
super
(frame, title ,
true
);
if
(cv.length >
1
) {
list =
new
MenuList(
new
Layout(cv));
list.setPreferredSize(
new
Dimension(
112
,
122
));
}
initGUI();
pack();
if
(frame!=
null
)
Utilities.center(
this
, frame);
setVisible(
true
);
}
void
initGUI() {
okCancelPane.addActionListener(
this
);
panel1.setLayout(
new
BorderLayout());
getContentPane().add(panel1);
panel1.add(jSplitPane, BorderLayout.CENTER);
panel1.add(okCancelPane, BorderLayout.SOUTH);
JScrollPane jsp =
new
JScrollPane(list);
jSplitPane.add(jsp, JSplitPane.LEFT);
jSplitPane.setDividerSize(
6
);
setViewSizes();
}
private
void
setViewSizes() {
int
wm =
0
;
int
hm =
0
;
for
(
int
i =
0
; i < list.getModel().getSize(); i++) {
int
w =list.getView(i).getComponent().getWidth();
int
h =list.getView(i).getComponent().getHeight();
if
(w>wm)
wm=w;
if
(h>hm)
hm=h;
}
Dimension max =
new
Dimension(wm, hm);
for
(
int
i =
0
; i < list.getModel().getSize(); i++) {
((JComponent)list.getView(i).getComponent()).setPreferredSize(max);
((JComponent)list.getView(i).getComponent()).setMinimumSize(max);
((JComponent)list.getView(i).getComponent()).setMaximumSize(max);
}
}
/**
* The menuList appears on the left hand side of the ConfigurationDialog.
*/
public
class
MenuList
extends
JList
implements
ListSelectionListener{
public
MenuList(Layout l) {
super
(l);
addListSelectionListener(
this
);
setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
setCellRenderer(l);
setSelectedIndex(
0
);
}
public
View getView(
int
index) {
return
((Layout)getModel()).getView(index);
}
public
void
valueChanged(ListSelectionEvent lse) {
if
(!lse.getValueIsAdjusting()) {
Component c = getView(getSelectedIndex()).getComponent();
jSplitPane.setRightComponent(c);
}
}
}
/**
* defines the menuList items layout
* (order, look and correspondent Viewable object).
*/
public
class
Layout
extends
DefaultListModel
implements
ListCellRenderer {
private
Component[] categories;
public
Layout(Configurable[] cv) {
super
();
categories =
new
Component[cv.length];
for
(
int
i =
0
; i < cv.length; i++) {
addElement(cv[i].getConfigurationView(
true
));
categories[i] = cv[i].getCategory();
}
}
public
View getView(
int
index) {
return
(View) getElementAt(index);
}
public
Component getCategory(
int
index) {
return
(Component) categories[index];
}
public
Component getListCellRendererComponent(
JList list,
Object value,
int
index,
boolean
isSelected,
boolean
cellHasFocus) {
Component c = getCategory(index);
if
(isSelected) {
c.setEnabled(
true
);
c.setForeground(Color.darkGray);
}
else
if
(c
instanceof
JLabel)
((JLabel)c).setEnabled(
false
);
return
c;
}
}
public
void
actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if
(command==CommonActions.CANCEL) {
dispose();
}
else
if
(command==CommonActions.OK) {
for
(
int
i =
0
; i < list.getModel().getSize(); i++) {
list.getView(i).doCommit();
}
dispose();
}
}
}
toygar dündaralp
bahcivan ibrahim sitesi orman sk.