/* Research Project: Graphical Database for Category Theory J. Bradbury, Dr. R. Rosebrugh, I. Rutherford Mount Allison University 2001 File: SettingsGraphical.java Description: This file creates a frame that allows the user to change certain graphical settings in the display of a category */ //import statements import java.awt.*; import java.awt.event.*; public class SettingsGraphical extends Dialog {//used to be frame (mkgrvs) July 9 Category c = new Category(); CategoryList l = new CategoryList(); int check_enter = 0; //IniSettings ini = new IniSettings(); //Objects in the Graphical User Interface(GUI) Button exit = new Button(); Panel button_panel = new Panel(); BorderLayout borderLayout1 = new BorderLayout(); Button okButton = new Button(); CheckboxGroup checkboxGroup1 = new CheckboxGroup(); Checkbox showControls = new Checkbox(); CheckboxGroup scaleGroup = new CheckboxGroup(); CheckboxGroup planeGroup = new CheckboxGroup(); Checkbox setFont = new Checkbox(); Checkbox scaleDecrease = new Checkbox("", scaleGroup, false); Checkbox scaleOther = new Checkbox("", scaleGroup, false); Checkbox scaleIncrease = new Checkbox("", scaleGroup, false); Checkbox scaleOne = new Checkbox("", scaleGroup, false); TextField scaleField = new TextField(); Checkbox centerOffset = new Checkbox(); MainWindow ed; Panel panel1 = new Panel(); Label label1 = new Label(); Panel panel2 = new Panel(); Label label2 = new Label(); Panel panel3 = new Panel(); Label label3 = new Label(); GridBagLayout gridBagLayout1 = new GridBagLayout(); GridBagLayout gridBagLayout2 = new GridBagLayout(); GridBagLayout gridBagLayout3 = new GridBagLayout(); GridBagLayout gridBagLayout4 = new GridBagLayout(); GBConstraintsEditor g = new GBConstraintsEditor(); public SettingsGraphical(MainWindow edit) //Default Constructor with the parent frame as a parameter { super(edit); ed = edit; ed.enableMenus(false); try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } public boolean handleEvent(Event e) { if ((e.id == Event.WINDOW_DESTROY) || (e.id == Event.ACTION_EVENT)) { ed.enableMenus(true); hide(); //hide frame dispose(); //free resources return true; } else if (e.key == Event.ENTER) { if (check_enter == 0) check_enter++; else { ed.enableMenus(true); hide(); //hide frame dispose(); //free resources } return true; } return super.handleEvent(e); } public boolean action(Event e, Object o) { if ((e.target == exit) || (e.key == Event.ENTER)) { ed.enableMenus(true); hide(); //hide frame dispose(); //free resources return true; } return false; } private void jbInit() throws Exception //This function intializes the GUI { this.setTitle("GDCT: Graphical Settings"); this.setBackground(new Color(192,192,192)); okButton.setLabel("OK"); okButton.setLabel("OK"); this.setLayout(gridBagLayout4); centerOffset.setLabel("Center Offset"); panel1.setBackground(new Color(164, 164, 164)); label1.setText("Viewing Offset:"); panel2.setBackground(new Color(164, 164, 164)); panel2.setLayout(gridBagLayout3); label2.setText("Display:"); panel3.setBackground(new Color(164, 164, 164)); panel3.setLayout(gridBagLayout1); label3.setText("Scale:"); panel1.setLayout(gridBagLayout2); centerOffset.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(ItemEvent e) { centerOffset_itemStateChanged(e); } }); scaleField.setBackground(Color.white); this.add(okButton, g.getConstraints(1, 2, 1, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(6, 7, 11, 8), 128, 8)); this.add(panel1, g.getConstraints(1, 0, 1, 1, 1.0, 1.0 ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(9, 9, 0, 9), 0, 2)); panel1.add(label1, g.getConstraints(0, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(3, 2, 0, 0), 0, 0)); panel1.add(centerOffset, g.getConstraints(0, 1, 2, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 35, 8, 19), 0, 0)); this.add(panel2, g.getConstraints(1, 1, 1, 1, 1.0, 1.0 ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(7, 9, 0, 7), 0, 1)); panel2.add(label2, g.getConstraints(0, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 0, 0), 0, 0)); panel2.add(showControls, g.getConstraints(0, 1, 3, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 34, 0, 13), 0, 0)); panel2.add(setFont, g.getConstraints(0, 2, 2, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 33, 2, 0), 0, 0)); this.add(panel3, g.getConstraints(0, 0, 1, 2, 1.0, 1.0 ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(9, 6, 0, 0), -8, 4)); panel3.add(label3, g.getConstraints(0, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 7, 0, 0), 0, 0)); panel3.add(scaleDecrease, g.getConstraints(0, 1, 3, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 24, 0, 0), 0, 0)); panel3.add(scaleOne, g.getConstraints(0, 2, 4, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 23, 0, 0), 0, 0)); panel3.add(scaleIncrease, g.getConstraints(0, 3, 3, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 23, 0, 0), 0, 0)); panel3.add(scaleOther, g.getConstraints(0, 4, 2, 1, 0.0, 0.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 24, 17, 0), -9, 0)); panel3.add(scaleField, g.getConstraints(2, 4, 3, 1, 1.0, 0.0 ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 19, 18), 19, 0)); scaleOne.setLabel("Scale = 1"); scaleOne.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(ItemEvent e) { scaleOne_itemStateChanged(e); } }); scaleIncrease.setLabel("Scale*2"); scaleIncrease.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(ItemEvent e) { scaleIncrease_itemStateChanged(e); } }); scaleOther.setLabel("Scale = "); scaleOther.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(ItemEvent e) { scaleOther_itemStateChanged(e); } }); scaleDecrease.setLabel("Scale/2"); scaleDecrease.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(ItemEvent e) { scaleDecrease_itemStateChanged(e); } }); if (ed.scale_ == 1) scaleOne.setState(true); else { scaleOther.setState(true); scaleField.setText(ed.scale_ + ""); } setFont.setLabel("Set Font"); setFont.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(ItemEvent e) { setFont_itemStateChanged(e); } }); showControls.setLabel("Show Controls"); if (ed.showControlsMenuItem.getState()) showControls.setState(true); else showControls.setState(false); showControls.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(ItemEvent e) { showControls_itemStateChanged(e); } }); } void showControls_itemStateChanged(ItemEvent e) //This function is called when the show controls option is selected { if (showControls.getState()) { ed.showControlsMenuItem.setState(true); ed.t.setVisible(true); ed.ini.setCatControls(true); } else { ed.showControlsMenuItem.setState(false); ed.t.setVisible(false); ed.ini.setCatControls(false); } ed.validate(); } void centerOffset_itemStateChanged(ItemEvent e) //This function is called when the center offset option //is selected { DDimension port_dim = ed.viewingPanel_.getPortSize(); DDimension cont_dim = ed.viewingPanel_.getContentSize(); double x = (cont_dim.width - port_dim.width) / 2.0; double y = (cont_dim.height - port_dim.height) / 2.0; ed.viewingPanel_.scrollTo((int)x, (int)y); ed.portScroller_.setOffset(x, y); } void setFont_itemStateChanged(ItemEvent e) //This option displays a font dialog window when the Font //Settings option is selected { if(ed.fontPropDialog_ == null){ ed.fontPropDialog_ = new FontPropDialog(ed, ed.graphCanvas_); } else ed.fontPropDialog_.showMe(); //Update the font information in the initialization file ed.ini.setCatFont(ed.graphCanvas_.getFont()); } void scaleDecrease_itemStateChanged(ItemEvent e) //Selected when the user decides to make scale = scale/2 { ed.scale_ /= 2.0; ed.graphCanvas_.setScale(ed.scale_); ed.scaleLabel_.setText("Scale: " + ed.scale_); //Save new scale value in initialization file ed.ini.setCatScale(ed.scale_); } void scaleOne_itemStateChanged(ItemEvent e) //Selected when the user decides to make scale = 1 { ed.scale_ = 1.0; ed.graphCanvas_.setScale(ed.scale_); ed.scaleLabel_.setText("Scale: " + ed.scale_); //Save new scale value in initialization file ed.ini.setCatScale(ed.scale_); } void scaleIncrease_itemStateChanged(ItemEvent e) //Selected when the user decides to make scale = scale*2 { ed.scale_ *= 2.0; ed.graphCanvas_.setScale(ed.scale_); ed.scaleLabel_.setText("Scale: " + ed.scale_); //Save new scale value in initialization file ed.ini.setCatScale(ed.scale_); } void scaleOther_itemStateChanged(ItemEvent e) //Selected when the user decides to make scale = value of scaleField { try { ed.scale_ = Double.valueOf(scaleField.getText()).doubleValue(); ed.graphCanvas_.setScale(ed.scale_); ed.scaleLabel_.setText("Scale: " + ed.scale_); //Save new scale value in initialization file ed.ini.setCatScale(ed.scale_); } catch (NumberFormatException e1) { new MessageDialog(ed, "Error", "Scale value must be a double", true); } } }