package luento25.valswt; import java.io.IOException; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Label; import com.swtdesigner.SWTResourceManager; import demo.ValuuttaMuunnos; import fi.jyu.mit.ohj2.Mjonot; import org.eclipse.swt.layout.RowData; import org.eclipse.swt.events.KeyAdapter; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.ModifyEvent; /** * Vaihtaja tehtynä swt:llä * @author vesal * @version 9.4.2010 */ public class VaihtajaSwt extends Shell { private Text editRaha; private Combo cbValuutta; private Label labelOn; private Text editTulos; private Label labelPerus; /** * Launch the application. * @param args ei käytössä */ public static void main(String args[]) { try { Display display = Display.getDefault(); VaihtajaSwt shell = new VaihtajaSwt(display); shell.alustaValuutat(); shell.open(); shell.layout(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } } catch (Exception e) { e.printStackTrace(); } } /** * Create the shell. * @param display näyttö jota käytetään */ public VaihtajaSwt(Display display) { super(display, SWT.SHELL_TRIM); setLayout(new RowLayout(SWT.HORIZONTAL)); editRaha = new Text(this, SWT.BORDER); editRaha.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent arg0) { vaihda(); } }); editRaha.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent arg0) { if ( arg0.character == '\r') editRaha.selectAll(); } }); editRaha.setLayoutData(new RowData(66, 30)); editRaha.setFont(SWTResourceManager.getFont("Arial", 16, SWT.BOLD)); cbValuutta = new Combo(this, SWT.NONE); cbValuutta.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent arg0) { vaihda(); } }); cbValuutta.setLayoutData(new RowData(75, 32)); cbValuutta.setFont(SWTResourceManager.getFont("Arial", 16, SWT.BOLD)); labelOn = new Label(this, SWT.NONE); labelOn.setFont(SWTResourceManager.getFont("Arial", 16, SWT.BOLD)); labelOn.setText("="); editTulos = new Text(this, SWT.BORDER); editTulos.setLayoutData(new RowData(75, 30)); editTulos.setFont(SWTResourceManager.getFont("Arial", 16, SWT.BOLD)); editTulos.setText("1.0"); labelPerus = new Label(this, SWT.NONE); labelPerus.setFont(SWTResourceManager.getFont("Arial", 16, SWT.BOLD)); labelPerus.setText("mk"); createContents(); } /** * Create contents of the shell. */ protected void createContents() { setText("Rahanvaihtaja"); setSize(450, 80); } @Override protected void checkSubclass() { // Disable the check that prevents subclassing of SWT components } private final ValuuttaMuunnos.Valuutat valuutat = new ValuuttaMuunnos.Valuutat(); /** * Vaihtaa editRahassa olevan rahamäärän perusvaluuttaan * ja laittaa sen editTulokseen */ private void vaihda() { double raha = Mjonot.erotaDouble(editRaha.getText(),0); double tulos = valuutat.getVaihdettuMaara(cbValuutta.getText(),raha); editTulos.setText(String.format("%4.2f",tulos)); } /** * Alustetaan valuutta combo ja peruvaluutta * @throws IOException jos lukeminen ei onnistu */ public void alustaValuutat() throws IOException { String nimi = "http://users.jyu.fi/~vesal/kurssit/ohj2/luennot/10/0413ti/src/luento25/valuutat.dat"; valuutat.lue(nimi); String nimet[] = valuutat.getValuuttojenNimet(); for (String jono : nimet) cbValuutta.add(jono); if ( nimet.length > 1 ) cbValuutta.setText(nimet[1]); // Vaihdetaan perusvaluutan teksti labelPerus.setText(valuutat.ekanValuutannimi()); vaihda(); editRaha.selectAll(); } }