View Javadoc

1   /*******************************************************************************
2    * SAT4J: a SATisfiability library for Java Copyright (C) 2004, 2012 Artois University and CNRS
3    *
4    * All rights reserved. This program and the accompanying materials
5    * are made available under the terms of the Eclipse Public License v1.0
6    * which accompanies this distribution, and is available at
7    *  http://www.eclipse.org/legal/epl-v10.html
8    *
9    * Alternatively, the contents of this file may be used under the terms of
10   * either the GNU Lesser General Public License Version 2.1 or later (the
11   * "LGPL"), in which case the provisions of the LGPL are applicable instead
12   * of those above. If you wish to allow use of your version of this file only
13   * under the terms of the LGPL, and not to allow others to use your version of
14   * this file under the terms of the EPL, indicate your decision by deleting
15   * the provisions above and replace them with the notice and other provisions
16   * required by the LGPL. If you do not delete the provisions above, a recipient
17   * may use your version of this file under the terms of the EPL or the LGPL.
18   *
19   * Based on the original MiniSat specification from:
20   *
21   * An extensible SAT solver. Niklas Een and Niklas Sorensson. Proceedings of the
22   * Sixth International Conference on Theory and Applications of Satisfiability
23   * Testing, LNCS 2919, pp 502-518, 2003.
24   *
25   * See www.minisat.se for the original solver in C++.
26   *
27   * Contributors:
28   *   CRIL - initial API and implementation
29   *******************************************************************************/
30  package org.sat4j.sat;
31  
32  import java.awt.Dimension;
33  import java.awt.event.ActionEvent;
34  import java.awt.event.ActionListener;
35  
36  import javax.swing.BoxLayout;
37  import javax.swing.JButton;
38  import javax.swing.JPanel;
39  import javax.swing.JScrollPane;
40  import javax.swing.JTextArea;
41  
42  /**
43   * 
44   * This panel contains buttons that control restart and clean on solver. It also
45   * displays history of commands.
46   * 
47   * @author sroussel
48   * 
49   */
50  public class VerySimpleCommandPanel extends JPanel {
51  
52      private static final long serialVersionUID = 1L;
53  
54      private RemoteControlStrategy telecomStrategy;
55  
56      public static final String RESTART = "Restart";
57      public static final String CLEAN = "Clean";
58  
59      private JButton restartButton;
60      private JButton cleanButton;
61  
62      private JTextArea console;
63  
64      public VerySimpleCommandPanel(RemoteControlStrategy telecomStrategy) {
65          super();
66  
67          this.setPreferredSize(new Dimension(200, 200));
68  
69          this.telecomStrategy = telecomStrategy;
70  
71          this.restartButton = new JButton(RESTART);
72  
73          this.restartButton.addActionListener(new ActionListener() {
74              public void actionPerformed(ActionEvent e) {
75                  hasClickedOnRestart();
76              }
77          });
78  
79          this.cleanButton = new JButton(CLEAN);
80  
81          this.cleanButton.addActionListener(new ActionListener() {
82              public void actionPerformed(ActionEvent e) {
83                  hasClickedOnClean();
84              }
85          });
86  
87          this.console = new JTextArea();
88  
89          JScrollPane scrollPane = new JScrollPane(this.console);
90  
91          scrollPane.setPreferredSize(new Dimension(100, 100));
92  
93          this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
94          this.add(this.restartButton);
95          this.add(this.cleanButton);
96          this.add(scrollPane);
97  
98      }
99  
100     public void hasClickedOnRestart() {
101         this.telecomStrategy.setHasClickedOnRestart(true);
102         this.console.append("Has clicked on " + RESTART + "\n");
103         this.console.repaint();
104         this.repaint();
105     }
106 
107     public void hasClickedOnClean() {
108         this.telecomStrategy.setHasClickedOnClean(true);
109         this.console.append("Has clicked on " + CLEAN + "\n");
110         this.console.repaint();
111         this.repaint();
112     }
113 
114 }