source: trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/ConsoleTabComposite.java @ 387

Last change on this file since 387 was 381, checked in by sherbold, 13 years ago
  • minor improvements of the SWT GUI
  • Property svn:mime-type set to text/plain
File size: 2.8 KB
Line 
1package de.ugoe.cs.eventbench.swt;
2
3import org.eclipse.swt.SWT;
4import org.eclipse.swt.widgets.Event;
5import org.eclipse.swt.widgets.Listener;
6import org.eclipse.swt.widgets.Text;
7import org.eclipse.swt.widgets.Label;
8import org.eclipse.swt.widgets.Composite;
9import org.eclipse.swt.widgets.Button;
10import org.eclipse.swt.layout.GridLayout;
11import org.eclipse.swt.layout.GridData;
12import org.eclipse.swt.custom.StyledText;
13import org.eclipse.swt.events.SelectionAdapter;
14import org.eclipse.swt.events.SelectionEvent;
15
16import org.eclipse.swt.events.KeyAdapter;
17import org.eclipse.swt.events.KeyEvent;
18
19
20import de.ugoe.cs.util.console.CommandExecuter;
21
22/**
23 * <p>
24 * Implements the composite for the console tab in the applications main window.
25 * </p>
26 *
27 * @author Steffen Herbold
28 * @version 1.0
29 */
30public class ConsoleTabComposite extends Composite {
31
32        protected Text textCommand;
33       
34        protected StyledText textConsoleOutput;
35       
36        /**
37         * Create the composite.
38         * @param parent
39         * @param style
40         */
41        public ConsoleTabComposite(Composite parent, int style) {
42                super(parent, style);
43                createContents();
44        }
45       
46        private void createContents() {
47                setLayout(new GridLayout(3, false));
48               
49                Label lblCommand = new Label(this, SWT.NONE);
50                lblCommand.setText("Command:");
51               
52                textCommand = new Text(this, SWT.BORDER);
53                textCommand.addKeyListener(new KeyAdapter() {
54                        @Override
55                        public void keyReleased(KeyEvent e) {
56                                if( e.keyCode==SWT.CR ) {
57                                        executeCommand();
58                                }
59                        }
60                });
61                GridData gd_textCommand = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
62                gd_textCommand.widthHint = 304;
63                textCommand.setLayoutData(gd_textCommand);
64                textCommand.setFocus();
65               
66                Button btnEnter = new Button(this, SWT.NONE);
67                btnEnter.addSelectionListener(new SelectionAdapter() {
68                        @Override
69                        public void widgetSelected(SelectionEvent e) {
70                                executeCommand();
71                        }
72                });
73                btnEnter.setText("Enter");
74               
75                textConsoleOutput = new StyledText(this, SWT.BORDER | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL | SWT.CANCEL);
76                GridData gd_textConsoleOutput = new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1);
77                gd_textConsoleOutput.heightHint = 102;
78                gd_textConsoleOutput.widthHint = 456;
79                textConsoleOutput.setLayoutData(gd_textConsoleOutput);
80                textConsoleOutput.addListener(SWT.Modify, new Listener(){
81                    public void handleEvent(Event e){
82                        textConsoleOutput.setTopIndex(textConsoleOutput.getLineCount() - 1);
83                    }
84                });
85
86        }
87       
88        private void executeCommand() {
89                String command = textCommand.getText().trim();
90                CommandExecuter.getInstance().exec(command);
91                textCommand.setText("");
92        }
93
94        @Override
95        protected void checkSubclass() {
96                // Disable the check that prevents subclassing of SWT components
97        }
98
99}
Note: See TracBrowser for help on using the repository browser.