/** * Interactive Rotar with GUI control * */ import guicomponents.*; GLabel lblR1, lblR2, lblF1x, lblF1y, lblF2x, lblF2y, lbldF1x,lbldF1y,lbldF2x,lbldF2y,lbldPhf1x,lbldPhf1y; GSlider sdrR1, sdrR2; GTextField txtF1x,txtF1y,txtF2x,txtF2y,txtdF1x,txtdF1y,txtdF2x,txtdF2y,txtdPhf1x,txtdPhf1y; GCheckbox cbxLine; GPanel p; Rotar rt; void setup(){ size(640, 640); rt = new Rotar(); GComponent.globalColor = GCScheme.getColor(this, GCScheme.BLUE_SCHEME); GComponent.globalFont = GFont.getFont(this, "Georgia", 11); // Create the various GUI components p = new GPanel(this, "Rotar Control Panel", 30, 30, 560, 90); p.setAlpha(192); lblR1 = new GLabel(this, "R1", 2, 4, 120); lblR2 = new GLabel(this, "R2", 2, 18, 120); lblF1x = new GLabel(this, "F1x", 2, 32, 120); txtF1x = new GTextField(this, "1.0", 35, 32, 60, 0); lblF1y = new GLabel(this, "F1y", 95, 32, 120); txtF1y = new GTextField(this, "1.0", 128, 32, 60, 0); lbldF1x = new GLabel(this, "dF1x", 188, 32, 120); txtdF1x = new GTextField(this, "0.00001", 188+44, 32, 60, 0); lbldF1y = new GLabel(this, "dF1y", 188+44+60, 32, 120); txtdF1y = new GTextField(this, "0.00001", 188+60+88, 32, 60, 0); lbldPhf1x = new GLabel(this, "dPhx", 188+60+88+60, 32, 120); txtdPhf1x = new GTextField(this, "0.00001", 188+120+88+44, 32, 60, 0); lblF2x = new GLabel(this, "F2x", 2, 46, 120); txtF2x = new GTextField(this, "2.0", 35, 46, 60, 0); lblF2y = new GLabel(this, "F2y", 95, 46, 120); txtF2y = new GTextField(this, "2.0", 128, 46, 60, 0); lbldF2x = new GLabel(this, "dF2x", 188, 46, 120); txtdF2x = new GTextField(this, "0.00001", 188+44, 46, 60, 0); lbldF2y = new GLabel(this, "dF2y", 188+44+60, 46, 120); txtdF2y = new GTextField(this, "0.00001", 188+60+88, 46, 60, 0); sdrR1 = new GHorzSlider(this, 125, 4, 420, 11); sdrR2 = new GHorzSlider(this, 125, 18, 420, 11); sdrR1.setLimits(60, 0, 400); sdrR2.setLimits(40, 0, 400); cbxLine = new GCheckbox(this, "Line or point?", 2, 65, 100); p.add(lblR1); p.add(lblR2); p.add(lblF1x); p.add(lblF2x); p.add(lblF1y); p.add(lblF2y); p.add(lbldF1x); p.add(lbldF1y); p.add(lbldF2x); p.add(lbldF2y); p.add(lbldPhf1x); //p.add(lbldPhf1y); p.add(sdrR1); p.add(sdrR2); p.add(txtF1x); p.add(txtF2x); p.add(txtF1y); p.add(txtF2y); p.add(txtdF1x); p.add(txtdF1y); p.add(txtdF2x); p.add(txtdF2y); p.add(txtdPhf1x); // p.add(txtdPhf1y); p.add(cbxLine); readAll(); } void handleTextFieldEvents(GTextField tfield){ readAll(); } public void readAll(){ rt.setF1x(float(txtF1x.getText())); rt.setF1y(float(txtF1y.getText())); rt.setdF1x(float(txtdF1x.getText())); rt.setdF1y(float(txtdF1y.getText())); rt.setdPhf1x(float(txtdPhf1x.getText())); rt.setdF1y(float(txtdF1y.getText())); rt.setF2x(float(txtF2x.getText())); rt.setF2y(float(txtF2y.getText())); rt.setdF2x(float(txtdF2x.getText())); rt.setdF2y(float(txtdF2y.getText())); rt.setR1(sdrR1.getValue()); rt.setR2(sdrR2.getValue()); rt.resetPhase(); } public void handleSliderEvents(GSlider slider){ if(slider == sdrR1) rt.setR1(sdrR1.getValue()); if(slider == sdrR2) rt.setR2(sdrR2.getValue()); } public void handleCheckboxEvents(GCheckbox cbox){ if(cbox == cbxLine) rt.setLine(cbxLine.isSelected()); } void draw(){ background(192, 220, 192); // draw it rt.draw(); }