001 002 package gui; 003 004 import java.awt.event.ActionListener; 005 import java.awt.event.ActionEvent; 006 007 //import javax.swing.Action; 008 import javax.swing.JButton; 009 import javax.swing.JMenuItem; 010 import javax.swing.JTextField; 011 012 /** 013 * Main class to send GUI actions to the TSP model. 014 * @author Heinz Kredel. 015 */ 016 public class TSPguiActionControl implements ActionListener { 017 018 TSPguiModel model; 019 020 /** 021 * @param model the TSPguiModel. 022 */ 023 public TSPguiActionControl(TSPguiModel model) { 024 this.model = model; 025 } 026 027 public void actionPerformed(ActionEvent event) { 028 Object s = event.getSource(); 029 //System.out.println("source = " + s); 030 if ( s instanceof JMenuItem ) { 031 JMenuItem source = (JMenuItem)s; 032 String was = source.getActionCommand(); 033 if ( was == null ) { 034 return; 035 } 036 if ( was.equals("generate") ) { 037 model.generateProblem(); 038 model.doUpdate(); 039 return; 040 } 041 if ( was.equals("solve") ) { 042 model.solveProblem(); 043 model.doUpdate(); 044 return; 045 } 046 if ( was.equals("stop") ) { 047 model.stopProblem(); 048 model.doUpdate(); 049 return; 050 } 051 if ( was.equals("sequential") ) { 052 model.setAlgorithm( was ); 053 model.doUpdate(); 054 return; 055 } 056 if ( was.equals("parallel") ) { 057 model.setAlgorithm( was ); 058 model.doUpdate(); 059 return; 060 } 061 if ( was.equals("distributed") ) { 062 model.setAlgorithm( was ); 063 model.doUpdate(); 064 return; 065 } 066 if ( was.equals("about") ) { 067 TSPguiMain.doAboutDialog(); 068 model.doUpdate(); 069 return; 070 } 071 if ( was.equals("standAlone") ) { 072 try { 073 model.setStandAlone( ! model.getStandAlone() ); 074 } catch (NumberFormatException ignored) { 075 //ignored.printStackTrace(); 076 } 077 model.doUpdate(); 078 return; 079 } 080 if ( was.equals("exit") ) { 081 if ( ! model.isDone() ) { 082 if ( ! TSPguiMain.doExitDialog() ) { 083 return; 084 } 085 model.setDone(); 086 } 087 return; 088 } 089 return; 090 } 091 if ( s instanceof JTextField ) { 092 JTextField source = (JTextField)s; 093 System.out.println("source = " + event.getActionCommand() ); 094 String was = event.getActionCommand(); 095 if ( was == null ) { 096 return; 097 } 098 if ( was.equals("size") ) { 099 try { 100 int i = Integer.parseInt( source.getText() ); 101 model.setProbSize(i); 102 } catch (NumberFormatException ignored) { 103 } 104 model.doUpdate(); 105 return; 106 } 107 if ( was.equals("file") ) { 108 // not implemented 109 model.doUpdate(); 110 return; 111 } 112 if ( was.equals("algorithm") ) { 113 model.setAlgorithm( source.getText() ); 114 model.doUpdate(); 115 return; 116 } 117 if ( was.equals("threads") ) { 118 try { 119 int i = Integer.parseInt( source.getText() ); 120 model.setThreads(i); 121 } catch (NumberFormatException ignored) { 122 } 123 model.doUpdate(); 124 return; 125 } 126 if ( was.equals("maxiter") ) { 127 try { 128 long i; 129 if ( source.getText().equals("max") ) { 130 i = Long.MAX_VALUE; 131 } else { 132 i = Long.parseLong( source.getText() ); 133 } 134 model.setMaxIterations(i); 135 } catch (NumberFormatException ignored) { 136 //ignored.printStackTrace(); 137 } 138 model.doUpdate(); 139 return; 140 } 141 if ( was.equals("server") ) { 142 model.setServer( source.getText() ); 143 model.doUpdate(); 144 return; 145 } 146 if ( was.equals("port") ) { 147 try { 148 int i = Integer.parseInt( source.getText() ); 149 model.setPort(i); 150 } catch (NumberFormatException ignored) { 151 //ignored.printStackTrace(); 152 } 153 model.doUpdate(); 154 return; 155 } 156 return; 157 } 158 if ( s instanceof JButton ) { 159 JButton source = (JButton)s; 160 //System.out.println("source = " + event.getActionCommand() ); 161 String was = event.getActionCommand(); 162 if ( was == null ) { 163 return; 164 } 165 return; 166 } 167 } 168 169 }