/* @(#)Methods.java 1.0 16 November 2004 */ /* Useful imports */ import edu.neu.ccs.*; import edu.neu.ccs.gui.*; import edu.neu.ccs.codec.*; import edu.neu.ccs.console.*; import edu.neu.ccs.filter.*; import edu.neu.ccs.jpf.*; import edu.neu.ccs.parser.*; import edu.neu.ccs.pedagogy.*; import edu.neu.ccs.quick.*; import edu.neu.ccs.util.*; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.awt.font.*; import java.awt.image.*; import javax.swing.*; import javax.swing.border.*; import java.io.*; import java.util.*; import java.math.*; import java.beans.*; import java.lang.reflect.*; import java.net.*; import java.util.regex.*; // import java.text.*; public class Methods extends JPF { public static void main(String[] args) { new Methods(); } public void ShowRandomBitDisplay() { BitDisplay display = new BitDisplay(); JPTFrame.createQuickJPTFrame("test", display); display.setBitsRandomly(); } public void ShowBitDisplayFromInteger(int value) { BitDisplay display = new BitDisplay(); JPTFrame.createQuickJPTFrame("test", display); display.setBitsFromInteger(value); } public void ShowBitDisplayTester() { BitDisplayTester.test(); } } class BitDisplay extends TablePanel { public static final String TOGGLE = "toggle"; private PaintSwatch[] swatchdata = new PaintSwatch[32]; private Hashtable location = new Hashtable(); private MouseAction toggle = new MouseAction() { public void mouseActionPerformed(MouseEvent evt) { PaintSwatch swatch = (PaintSwatch) evt.getComponent(); toggleSwatch(swatch); fire(); } }; public BitDisplay() { super(2, 32, 5, 5, CENTER); initializeCells(); } void initializeCells() { // cell numbers for (int i = 0; i <= 31; i++) { int j = 31 - i; addObject("" + i, 0, j); } // create and install swatches for (int i = 0; i <= 31; i++) { int j = 31 - i; swatchdata[i] = new PaintSwatch(Colors.white, 15, 15); addObject(swatchdata[i], 1, j); location.put(swatchdata[i], new Integer(i)); MouseActionAdapter adapter = swatchdata[i].getMouseActionAdapter(); adapter.addMouseReleasedAction(toggle); } } public void setBit(int position, int bit) { if ((position < 0) || (position > 31)) return; if ((bit < 0) || (bit > 1)) return; if (bit == 1) swatchdata[position].setPaint(Colors.black); else swatchdata[position].setPaint(Colors.white); } public int getBit(int position) { if ((position < 0) || (position > 31)) return 0; Paint paint = swatchdata[position].getPaint(); if (paint.equals(Colors.black)) return 1; else return 0; } public void toggleBit(int position) { if ((position < 0) || (position > 31)) return; setBit(position, 1 - getBit(position)); } public void setBitsRandomly() { for (int i = 0; i <= 31; i++) setBit(i, MathUtilities.randomInt(0, 1)); } public void setBitsFromInteger(int value) { // to do } public int getIntegerFromBits() { // to do return 0; } private int getLocation(PaintSwatch swatch) { Integer integer = (Integer) location.get(swatch); if (integer == null) return -1; return integer.intValue(); } private void toggleSwatch(PaintSwatch swatch) { toggleBit(getLocation(swatch)); } private void fire() { firePropertyChange(TOGGLE, (int)0, (int)1); } } class BitDisplayTester extends DisplayPanel { private BitDisplay display = new BitDisplay(); private TextFieldView view = new TextFieldView("0", 200); private Annotation counter = new Annotation("Mouse Click Count = 0"); private int clickcount = 0; private TablePanel mainPanel = new TablePanel (new Object[] { view, counter, display }, VERTICAL, 10, 10, CENTER); private SimpleAction updateFromBits = new SimpleAction("update from bits") { public void perform() { updateIntegerFromBits(); updateCounter(); } }; private SimpleAction updateFromView = new SimpleAction("update from view") { public void perform() { updateBitsFromInteger(); } }; private void updateIntegerFromBits() { view.setViewState("" + display.getIntegerFromBits()); } private void updateCounter() { clickcount++; counter.setText("Mouse Click Count = " + clickcount); } private void updateBitsFromInteger() { display.setBitsFromInteger(view.demandInt()); } private void setBackgrounds() { Color backcolor = Colors.burlywood; setBackground(backcolor); display.setBackground(backcolor); mainPanel.setBackground(backcolor); } public BitDisplayTester() { setBackgrounds(); add(mainPanel); display.addPropertyChangeListener(BitDisplay.TOGGLE, updateFromBits); view.addActionListener(updateFromView); } public static void test() { JPTFrame.createQuickJPTFrame("test", new BitDisplayTester()); } }