1
23package org.jzuul.gdk.swt;
24
25import org.eclipse.swt.SWT;
26import org.eclipse.swt.events.DisposeEvent;
27import org.eclipse.swt.events.DisposeListener;
28import org.eclipse.swt.events.SelectionAdapter;
29import org.eclipse.swt.events.SelectionEvent;
30import org.eclipse.swt.events.SelectionListener;
31import org.eclipse.swt.layout.GridData;
32import org.eclipse.swt.layout.GridLayout;
33import org.eclipse.swt.widgets.Button;
34import org.eclipse.swt.widgets.Composite;
35import org.eclipse.swt.widgets.Dialog;
36import org.eclipse.swt.widgets.Display;
37import org.eclipse.swt.widgets.Label;
38import org.eclipse.swt.widgets.Shell;
39import org.eclipse.swt.widgets.Slider;
40import org.jzuul.engine.gui.utils.Util;
41
42
48public class RunDialog extends Dialog {
49
50 private Label numbers;
51 private Label numOfPlayers_label;
52
53 private Button threadedNPC_button;
54
55 private Slider slider;
56
57 private Button ok;
58
59 private Button cancel;
60
61 private RunValues runvalues;
62
63
66 public RunDialog(Shell shell) {
67 super(shell);
68 runvalues = new RunValues();
69 }
70
71
75 public RunDialog(Shell shell, int style) {
76 super(shell, style);
77 runvalues = new RunValues();
78 }
79
80 public void setRunValues(RunValues runValues) {
81 this.runvalues = runValues;
82 }
83
84 public RunValues open() {
85 Shell parent = getParent();
86 final Shell shell = new Shell(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
87
88
89 shell.setText(Messages.getString("ENGINE_OPTIONS")); shell.setImage(Util.getImagefromResource(parent.getDisplay(),"etc/artwork/jz.png")); shell.setLayout(new GridLayout(2, false));
92
93 threadedNPC_button = new Button(shell, SWT.CHECK);
94 threadedNPC_button.setSelection(runvalues.threadedNPCs);
95 threadedNPC_button.setText(Messages.getString("THREADED_NPCS")); threadedNPC_button.setToolTipText(Messages.getString("THREADED_TOOLTIP"));
98 final Button askPlayer = new Button(shell, SWT.CHECK);
99 askPlayer.setSelection(runvalues.askPlayerName);
00 askPlayer.setText(Messages.getString("ASK_PLAYER_NAME")); askPlayer.setToolTipText(Messages.getString("ASK_TOOLTIP"));
03 numOfPlayers_label = new Label(shell, SWT.NONE);
04 numOfPlayers_label.setText(Messages.getString("NUMBER_OF_PLAYERS"));
06 Composite comp = new Composite(shell,SWT.FILL);
07 comp.setLayout(new GridLayout(2,false));
08 slider = new Slider(comp, SWT.HORIZONTAL);
09 slider.setMinimum(1);
11 slider.setMaximum(20);
12 slider.setPageIncrement(1);
13 slider.setIncrement(1);
14 slider.addSelectionListener(new SelectionAdapter(){
15
16 public void widgetSelected(SelectionEvent e) {
17 numbers.setText("" + slider.getSelection()); numbers.update();
19 if (slider.getSelection() == 1) {
20 askPlayer.setSelection(false);
21 askPlayer.setEnabled(true);
22 } else {
23 askPlayer.setSelection(true);
24 askPlayer.setEnabled(false);
25 }
26 shell.update();
27 System.err.println("Slider: " + slider.getSelection()); }
29
30 public void widgetDefaultSelected(SelectionEvent e) {
31 }
33
34 });
35 numbers = new Label(comp,SWT.NONE);
36 numbers.setText(" " +slider.getSelection());
38 ok = new Button(shell, SWT.NONE);
39 ok.setText(Messages.getString("OK")); ok.addSelectionListener(new SelectionListener() {
41
42 public void widgetSelected(SelectionEvent arg0) {
43 runvalues = new RunValues(threadedNPC_button.getSelection(),
44 slider.getSelection(),askPlayer.getSelection());
45 shell.dispose();
46 }
47
48 public void widgetDefaultSelected(SelectionEvent arg0) {
49 }
50 });
51 GridData okDat = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
52 okDat.widthHint = 80;
53 ok.setLayoutData(okDat);
54
55 cancel = new Button(shell, SWT.NONE);
56 cancel.setText(Messages.getString("CANCEL")); cancel.addSelectionListener(new SelectionListener() {
58
59 public void widgetSelected(SelectionEvent arg0) {
60 shell.dispose();
61 }
62
63 public void widgetDefaultSelected(SelectionEvent arg0) {}
64 });
65 GridData cancelDat = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
66 cancelDat.widthHint = 80;
67 cancel.setLayoutData(cancelDat);
68
69 this.runvalues = null;
70 shell.pack();
71 shell.open();
72 Display display = parent.getDisplay();
73 while (!shell.isDisposed()) {
74 if (!display.readAndDispatch())
75 display.sleep();
76 }
77 return runvalues;
78 }
79}