File: Parameter.java

package info (click to toggle)
thepeg 1.8.0-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, wheezy
  • size: 9,312 kB
  • ctags: 11,509
  • sloc: cpp: 57,129; sh: 11,315; java: 3,212; lisp: 1,402; makefile: 830; ansic: 58; perl: 3
file content (128 lines) | stat: -rw-r--r-- 3,394 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package ThePEG;

import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;

public class Parameter extends Interface
  implements ActionListener, ChangeListener {

  double def;
  double min;
  double max;
  double current;
  boolean integer;

  JButton ok = new JButton("Ok");
  JButton cancel = new JButton("Cancel");
  JButton apply = new JButton("Apply");
  JButton reset = new JButton("Reset");
  JButton setdef = new JButton("Default");
  FullSlider slider;

  public Parameter(SetupThePEG own, ObjectFrame obj, LinkedList input, boolean in) {
    super(own, obj, input);
    integer = in;
    if ( !setup(input) ) {
      JOptionPane.showMessageDialog(own, "Could not create Parameter view",
				    "Error", JOptionPane.ERROR_MESSAGE);
      return;
    }

    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(getDescriptionArea(), BorderLayout.CENTER);
    if ( isReadonly() ) {
      JLabel lab = new JLabel("");
      if ( integer )
	lab.setText("Readonly value is " + slider.getInt());
      else
	lab.setText("Readonly value is " + slider.getDouble());
      lab.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));
      getContentPane().add(lab, BorderLayout.NORTH);
      ok.addActionListener(this);
      getContentPane().add(ok, BorderLayout.SOUTH);
    } else {
      JPanel buttons = new JPanel();
      buttons.add(cancel);
      buttons.add(reset);
      buttons.add(setdef);
      buttons.add(apply);
      buttons.add(ok);
      cancel.addActionListener(this);
      reset.addActionListener(this);
      setdef.addActionListener(this);
      apply.addActionListener(this);
      ok.addActionListener(this);
      getContentPane().add(buttons, BorderLayout.SOUTH);
      getContentPane().add(slider, BorderLayout.NORTH);
      slider.addChangeListener(this);
      fixButtons();
    }

    setTitle("Parameter");
    setupFrame(500,150);
    
  }

  protected boolean setup(LinkedList input) {
    if ( !super.setup(input) ) return false;
    try {
      current = Double.parseDouble((String)input.remove(0));
      String cmin = (String)input.remove(0);
      def = Double.parseDouble((String)input.remove(0));
      String cmax = (String)input.remove(0);

      if ( slider == null )
	slider = new FullSlider(cmin, current, cmax, def, integer);
      else
	slider.set(cmin, current, cmax, def);
    }
    catch ( NumberFormatException e ) {
      return false;
    }
    return true;
  }

  private void setValue() {
    setValue(integer? Long.toString(slider.getInt()):
      Double.toString(slider.getDouble()));
    reset();
  }

  public void actionPerformed(ActionEvent e) {
    if ( e.getSource() == cancel ) {
      dispose();
    }
    else if ( e.getSource() == ok ) {
      if ( !readonly ) setValue();
      dispose();
    }
    else if ( e.getSource() == apply ) {
      setValue();
    }
    else if ( e.getSource() == setdef ) {
      slider.set(min, def, max, def);
    }
    else if ( e.getSource() == reset ) {
      slider.set(min, current, max, def);
    }
    fixButtons();
  }

  public void stateChanged(ChangeEvent e) {
    fixButtons();
  }

  public void fixButtons() {
    double val = slider.getDouble();
    setdef.setEnabled(val != def);
    reset.setEnabled(val != current);
    apply.setEnabled(val != current);
  }

  public static void classcheck() {}

}