samer@0
|
1 /*
|
samer@0
|
2 * BooleanViewer.java
|
samer@0
|
3 *
|
samer@0
|
4 * Copyright (c) 2000, Samer Abdallah, King's College London.
|
samer@0
|
5 * All rights reserved.
|
samer@0
|
6 *
|
samer@0
|
7 * This software is provided AS iS and WITHOUT ANY WARRANTY;
|
samer@0
|
8 * without even the implied warranty of MERCHANTABILITY or
|
samer@0
|
9 * FITNESS FOR A PARTICULAR PURPOSE.
|
samer@0
|
10 */
|
samer@0
|
11
|
samer@0
|
12 package samer.core.viewers.swing;
|
samer@0
|
13 import samer.core.types.*;
|
samer@0
|
14 import samer.core.util.*;
|
samer@0
|
15 import samer.core.*;
|
samer@0
|
16
|
samer@0
|
17 import java.io.*;
|
samer@0
|
18 import java.util.*;
|
samer@0
|
19 import java.awt.*;
|
samer@0
|
20 import java.awt.event.*;
|
samer@0
|
21 import javax.swing.*;
|
samer@0
|
22
|
samer@0
|
23 public class BooleanViewer extends VariableViewer implements ItemListener
|
samer@0
|
24 {
|
samer@0
|
25 VBoolean vbool;
|
samer@0
|
26 JCheckBox cb;
|
samer@0
|
27
|
samer@0
|
28 public BooleanViewer(Viewable v) { this((VBoolean)v); }
|
samer@0
|
29 public BooleanViewer(VBoolean vbool)
|
samer@0
|
30 {
|
samer@0
|
31 super(vbool);
|
samer@0
|
32 this.vbool = vbool;
|
samer@0
|
33
|
samer@0
|
34 setLayout( new BoxLayout(panel(),BoxLayout.X_AXIS));
|
samer@0
|
35 setText(null);
|
samer@0
|
36
|
samer@0
|
37 cb = new JCheckBox(vbool.getLabel());
|
samer@0
|
38 cb.setFocusPainted(false);
|
samer@0
|
39 cb.setMargin(new Insets(0,0,0,0));
|
samer@0
|
40 cb.addItemListener(this);
|
samer@0
|
41 setImageIcons(
|
samer@0
|
42 Shell.getString("boolean.iconDirectory",
|
samer@0
|
43 System.getProperty("user.home",".")+"/buttons"));
|
samer@0
|
44 add(cb);
|
samer@0
|
45 add(Box.createHorizontalGlue());
|
samer@0
|
46 update(null,null);
|
samer@0
|
47 }
|
samer@0
|
48
|
samer@0
|
49 private void setImageIcons(String dirname) {
|
samer@0
|
50 File dir=new File(dirname);
|
samer@0
|
51 if (dir.isDirectory()) {
|
samer@0
|
52 Shell.trace("loading icons from "+dir);
|
samer@0
|
53 cb.setIcon(new ImageIcon(new File(dir,"rb.gif").getPath()));
|
samer@0
|
54 cb.setPressedIcon(new ImageIcon(new File(dir,"rbr.gif").getPath()));
|
samer@0
|
55 cb.setRolloverIcon(new ImageIcon(new File(dir,"rbp.gif").getPath()));
|
samer@0
|
56 cb.setRolloverSelectedIcon(new ImageIcon(new File(dir,"rbrs.gif").getPath()));
|
samer@0
|
57 cb.setSelectedIcon(new ImageIcon(new File(dir,"rbs.gif").getPath()));
|
samer@0
|
58 }
|
samer@0
|
59 }
|
samer@0
|
60
|
samer@0
|
61 public void update(Observable o, Object source) // &&&
|
samer@0
|
62 {
|
samer@0
|
63 if (source!=this) cb.setSelected(vbool.value);
|
samer@0
|
64 super.update(o,source);
|
samer@0
|
65 }
|
samer@0
|
66
|
samer@0
|
67 public void itemStateChanged(ItemEvent e)
|
samer@0
|
68 {
|
samer@0
|
69 vbool.value = (e.getStateChange()==ItemEvent.SELECTED);
|
samer@0
|
70 vbool.changed(this);
|
samer@0
|
71 }
|
samer@0
|
72 }
|
samer@0
|
73
|