<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: swt code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Wed, 08 Oct 2008 05:25:51 GMT</pubDate>
    <description>DZone Snippets: swt code</description>
    <item>
      <title>JFace/SWT content assist cell editor implementation</title>
      <link>http://snippets.dzone.com/posts/show/3944</link>
      <description>// a cell editor implementation providing autocompletion capabilities for JTable editing&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import java.text.MessageFormat;&lt;br /&gt;&lt;br /&gt;import org.eclipse.jface.fieldassist.IContentProposalProvider;&lt;br /&gt;import org.eclipse.jface.fieldassist.TextContentAdapter;&lt;br /&gt;import org.eclipse.jface.fieldassist.TextControlCreator;&lt;br /&gt;import org.eclipse.jface.util.Assert;&lt;br /&gt;import org.eclipse.jface.viewers.CellEditor;&lt;br /&gt;import org.eclipse.swt.SWT;&lt;br /&gt;import org.eclipse.swt.events.FocusAdapter;&lt;br /&gt;import org.eclipse.swt.events.FocusEvent;&lt;br /&gt;import org.eclipse.swt.events.KeyAdapter;&lt;br /&gt;import org.eclipse.swt.events.KeyEvent;&lt;br /&gt;import org.eclipse.swt.events.ModifyEvent;&lt;br /&gt;import org.eclipse.swt.events.ModifyListener;&lt;br /&gt;import org.eclipse.swt.events.MouseAdapter;&lt;br /&gt;import org.eclipse.swt.events.MouseEvent;&lt;br /&gt;import org.eclipse.swt.events.SelectionAdapter;&lt;br /&gt;import org.eclipse.swt.events.SelectionEvent;&lt;br /&gt;import org.eclipse.swt.events.TraverseEvent;&lt;br /&gt;import org.eclipse.swt.events.TraverseListener;&lt;br /&gt;import org.eclipse.swt.widgets.Composite;&lt;br /&gt;import org.eclipse.swt.widgets.Control;&lt;br /&gt;import org.eclipse.swt.widgets.Text;&lt;br /&gt;import org.eclipse.ui.fieldassist.ContentAssistField;&lt;br /&gt;import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * A cell editor that manages a content assist field.&lt;br /&gt; * The cell editor's value is the text string itself.&lt;br /&gt; * &lt;br /&gt; * This class may be instantiated; it is not intended to be subclassed.&lt;br /&gt; * &lt;br /&gt; */&lt;br /&gt;public class ContentAssistFieldCellEditor extends CellEditor &lt;br /&gt;{&lt;br /&gt;	protected ContentAssistField field;&lt;br /&gt;	&lt;br /&gt;	protected IContentProposalProvider contentProposalProvider; &lt;br /&gt;    &lt;br /&gt;	protected char[] completionProposalAutoActivationCharacters;&lt;br /&gt;	&lt;br /&gt;    private ModifyListener modifyListener;&lt;br /&gt;    &lt;br /&gt;    public ContentAssistFieldCellEditor( char[] completionProposalAutoActivationCharacters, IContentProposalProvider contentProposalProvider) &lt;br /&gt;    {&lt;br /&gt;		super();&lt;br /&gt;		this.completionProposalAutoActivationCharacters = completionProposalAutoActivationCharacters;&lt;br /&gt;		this.contentProposalProvider = contentProposalProvider;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Return the modify listener.&lt;br /&gt;     */&lt;br /&gt;    private ModifyListener getModifyListener() {&lt;br /&gt;        if (modifyListener == null) {&lt;br /&gt;            modifyListener = new ModifyListener() {&lt;br /&gt;                public void modifyText(ModifyEvent e) {&lt;br /&gt;                    editOccured(e);&lt;br /&gt;                }&lt;br /&gt;            };&lt;br /&gt;        }&lt;br /&gt;        return modifyListener;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;	public ContentAssistFieldCellEditor(Composite parent, int style, char[] completionProposalAutoActivationCharacters, IContentProposalProvider contentProposalProvider) {&lt;br /&gt;		super( parent, style);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public ContentAssistFieldCellEditor(Composite parent,char[] completionProposalAutoActivationCharacters, IContentProposalProvider contentProposalProvider) &lt;br /&gt;	{&lt;br /&gt;		super(parent);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;     * State information for updating action enablement&lt;br /&gt;     */&lt;br /&gt;    private boolean isSelection = false;&lt;br /&gt;&lt;br /&gt;    private boolean isDeleteable = false;&lt;br /&gt;&lt;br /&gt;    private boolean isSelectable = false;&lt;br /&gt;    &lt;br /&gt;    private Text text;&lt;br /&gt;    &lt;br /&gt;    @Override&lt;br /&gt;   	protected Control createControl(Composite parent) &lt;br /&gt;    {&lt;br /&gt;    	//SimpleContentProposalProvider proposelProvider = new SimpleContentProposalProvider( new String[] { "a", "b", "c"});  &lt;br /&gt;    	&lt;br /&gt;    	field = new ContentAssistField( 	&lt;br /&gt;			parent, &lt;br /&gt;			SWT.SINGLE,&lt;br /&gt;			new TextControlCreator(),&lt;br /&gt;			new TextContentAdapter(),&lt;br /&gt;			contentProposalProvider,&lt;br /&gt;			ITextEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS,&lt;br /&gt;			completionProposalAutoActivationCharacters&lt;br /&gt;		);&lt;br /&gt;    	&lt;br /&gt;    	text = (Text)field.getControl();&lt;br /&gt;    	text.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;            public void widgetDefaultSelected(SelectionEvent e) {&lt;br /&gt;                handleDefaultSelection(e);&lt;br /&gt;            }&lt;br /&gt;        });&lt;br /&gt;    	&lt;br /&gt;    	text.addKeyListener(new KeyAdapter() {&lt;br /&gt;            // hook key pressed - see PR 14201  &lt;br /&gt;            public void keyPressed(KeyEvent e) {&lt;br /&gt;                keyReleaseOccured(e);&lt;br /&gt;&lt;br /&gt;                // as a result of processing the above call, clients may have&lt;br /&gt;                // disposed this cell editor&lt;br /&gt;                if ((getControl() == null) || getControl().isDisposed()) {&lt;br /&gt;					return;&lt;br /&gt;				}&lt;br /&gt;                checkSelection(); // see explaination below&lt;br /&gt;                checkDeleteable();&lt;br /&gt;                checkSelectable();&lt;br /&gt;            }&lt;br /&gt;        });&lt;br /&gt;        text.addTraverseListener(new TraverseListener() {&lt;br /&gt;            public void keyTraversed(TraverseEvent e) {&lt;br /&gt;                if (e.detail == SWT.TRAVERSE_ESCAPE&lt;br /&gt;                        || e.detail == SWT.TRAVERSE_RETURN) {&lt;br /&gt;                    e.doit = false;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        });&lt;br /&gt;        // We really want a selection listener but it is not supported so we&lt;br /&gt;        // use a key listener and a mouse listener to know when selection changes&lt;br /&gt;        // may have occured&lt;br /&gt;        text.addMouseListener(new MouseAdapter() {&lt;br /&gt;            public void mouseUp(MouseEvent e) {&lt;br /&gt;                checkSelection();&lt;br /&gt;                checkDeleteable();&lt;br /&gt;                checkSelectable();&lt;br /&gt;            }&lt;br /&gt;        });&lt;br /&gt;        text.addFocusListener(new FocusAdapter() {&lt;br /&gt;            public void focusLost(FocusEvent e) {&lt;br /&gt;                ContentAssistFieldCellEditor.this.focusLost();&lt;br /&gt;            }&lt;br /&gt;        });&lt;br /&gt;        text.setFont(parent.getFont());&lt;br /&gt;        text.setBackground(parent.getBackground());&lt;br /&gt;        text.setText("");//$NON-NLS-1$&lt;br /&gt;        text.addModifyListener( getModifyListener());&lt;br /&gt;    	&lt;br /&gt;    	return field.getLayoutControl();&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    /**&lt;br /&gt;     * Checks to see if the "deleteable" state (can delete/&lt;br /&gt;     * nothing to delete) has changed and if so fire an&lt;br /&gt;     * enablement changed notification.&lt;br /&gt;     */&lt;br /&gt;    private void checkDeleteable() {&lt;br /&gt;        boolean oldIsDeleteable = isDeleteable;&lt;br /&gt;        isDeleteable = isDeleteEnabled();&lt;br /&gt;        if (oldIsDeleteable != isDeleteable) {&lt;br /&gt;            fireEnablementChanged(DELETE);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    /**&lt;br /&gt;     * Checks to see if the "selectable" state (can select)&lt;br /&gt;     * has changed and if so fire an enablement changed notification.&lt;br /&gt;     */&lt;br /&gt;    private void checkSelectable() {&lt;br /&gt;        boolean oldIsSelectable = isSelectable;&lt;br /&gt;        isSelectable = isSelectAllEnabled();&lt;br /&gt;        if (oldIsSelectable != isSelectable) {&lt;br /&gt;            fireEnablementChanged(SELECT_ALL);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    /**&lt;br /&gt;     * Checks to see if the selection state (selection /&lt;br /&gt;     * no selection) has changed and if so fire an&lt;br /&gt;     * enablement changed notification.&lt;br /&gt;     */&lt;br /&gt;    private void checkSelection() {&lt;br /&gt;        boolean oldIsSelection = isSelection;&lt;br /&gt;        isSelection = text.getSelectionCount() &gt; 0;&lt;br /&gt;        if (oldIsSelection != isSelection) {&lt;br /&gt;            fireEnablementChanged(COPY);&lt;br /&gt;            fireEnablementChanged(CUT);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    /**&lt;br /&gt;     * Processes a modify event that occurred in this text cell editor.&lt;br /&gt;     * This framework method performs validation and sets the error message&lt;br /&gt;     * accordingly, and then reports a change via fireEditorValueChanged.&lt;br /&gt;     * Subclasses should call this method at appropriate times. Subclasses&lt;br /&gt;     * may extend or reimplement.&lt;br /&gt;     *&lt;br /&gt;     * @param e the SWT modify event&lt;br /&gt;     */&lt;br /&gt;    protected void editOccured(ModifyEvent e) {&lt;br /&gt;        String value = text.getText();&lt;br /&gt;        if (value == null) {&lt;br /&gt;			value = "";//$NON-NLS-1$&lt;br /&gt;		}&lt;br /&gt;        Object typedValue = value;&lt;br /&gt;        boolean oldValidState = isValueValid();&lt;br /&gt;        boolean newValidState = isCorrect(typedValue);&lt;br /&gt;        if (typedValue == null &amp;&amp; newValidState) {&lt;br /&gt;			Assert.isTrue(false,&lt;br /&gt;                    "Validator isn't limiting the cell editor's type range");//$NON-NLS-1$&lt;br /&gt;		}&lt;br /&gt;        if (!newValidState) {&lt;br /&gt;            // try to insert the current value into the error message.&lt;br /&gt;            setErrorMessage(MessageFormat.format(getErrorMessage(),&lt;br /&gt;                    new Object[] { value }));&lt;br /&gt;        }&lt;br /&gt;        valueChanged(oldValidState, newValidState);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    /**&lt;br /&gt;     * Handles a default selection event from the text control by applying the editor&lt;br /&gt;     * value and deactivating this cell editor.&lt;br /&gt;     * &lt;br /&gt;     * @param event the selection event&lt;br /&gt;     */&lt;br /&gt;    protected void handleDefaultSelection(SelectionEvent event) &lt;br /&gt;    {&lt;br /&gt;        // same with enter-key handling code in keyReleaseOccured(e);&lt;br /&gt;        fireApplyEditorValue();&lt;br /&gt;        deactivate();&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    @Override&lt;br /&gt;    protected void doSetFocus() &lt;br /&gt;    {&lt;br /&gt;    	if( field!= null) {&lt;br /&gt;            field.getControl().setFocus();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    @Override&lt;br /&gt;    protected Object doGetValue() &lt;br /&gt;    {&lt;br /&gt;    	return ((Text)field.getControl()).getText();&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    @Override&lt;br /&gt;    protected void doSetValue(Object value) &lt;br /&gt;    {&lt;br /&gt;    	((Text)field.getControl()).setText( value.toString());&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    /**&lt;br /&gt;     * The implementation of this&lt;br /&gt;     *  method copies the&lt;br /&gt;     * current selection to the clipboard. &lt;br /&gt;     */&lt;br /&gt;    public void performCopy() {&lt;br /&gt;        text.copy();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * The implementation of this&lt;br /&gt;     *  method cuts the&lt;br /&gt;     * current selection to the clipboard. &lt;br /&gt;     */&lt;br /&gt;    public void performCut() {&lt;br /&gt;        text.cut();&lt;br /&gt;        checkSelection();&lt;br /&gt;        checkDeleteable();&lt;br /&gt;        checkSelectable();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * The implementation of this&lt;br /&gt;     *  method deletes the&lt;br /&gt;     * current selection or, if there is no selection,&lt;br /&gt;     * the character next character from the current position. &lt;br /&gt;     */&lt;br /&gt;    public void performDelete() {&lt;br /&gt;        if (text.getSelectionCount() &gt; 0) {&lt;br /&gt;			// remove the contents of the current selection&lt;br /&gt;            text.insert(""); //$NON-NLS-1$&lt;br /&gt;		} else {&lt;br /&gt;            // remove the next character&lt;br /&gt;            int pos = text.getCaretPosition();&lt;br /&gt;            if (pos &lt; text.getCharCount()) {&lt;br /&gt;                text.setSelection(pos, pos + 1);&lt;br /&gt;                text.insert(""); //$NON-NLS-1$&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        checkSelection();&lt;br /&gt;        checkDeleteable();&lt;br /&gt;        checkSelectable();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * The implementation of this&lt;br /&gt;     *  method pastes the&lt;br /&gt;     * the clipboard contents over the current selection. &lt;br /&gt;     */&lt;br /&gt;    public void performPaste() {&lt;br /&gt;        text.paste();&lt;br /&gt;        checkSelection();&lt;br /&gt;        checkDeleteable();&lt;br /&gt;        checkSelectable();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * The implementation of this&lt;br /&gt;     *  method selects all of the&lt;br /&gt;     * current text. &lt;br /&gt;     */&lt;br /&gt;    public void performSelectAll() {&lt;br /&gt;        text.selectAll();&lt;br /&gt;        checkSelection();&lt;br /&gt;        checkDeleteable();&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    /**&lt;br /&gt;     * Since a text editor field is scrollable we don't&lt;br /&gt;     * set a minimumSize.&lt;br /&gt;     */&lt;br /&gt;    public LayoutData getLayoutData() {&lt;br /&gt;        return new LayoutData();&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    /**&lt;br /&gt;     * Processes a key release event that occurred in this cell editor.&lt;br /&gt;     * &lt;br /&gt;     * The implementation of this framework method &lt;br /&gt;     * ignores when the RETURN key is pressed since this is handled in &lt;br /&gt;     * handleDefaultSelection.&lt;br /&gt;     * An exception is made for Ctrl+Enter for multi-line texts, since&lt;br /&gt;     * a default selection event is not sent in this case. &lt;br /&gt;     * &lt;br /&gt;     *&lt;br /&gt;     * @param keyEvent the key event&lt;br /&gt;     */&lt;br /&gt;    protected void keyReleaseOccured(KeyEvent keyEvent) {&lt;br /&gt;        if (keyEvent.character == '\r') { // Return key&lt;br /&gt;            // Enter is handled in handleDefaultSelection.&lt;br /&gt;            // Do not apply the editor value in response to an Enter key event&lt;br /&gt;            // since this can be received from the IME when the intent is -not-&lt;br /&gt;            // to apply the value.  &lt;br /&gt;            // See bug 39074 [CellEditors] [DBCS] canna input mode fires bogus event from Text Control&lt;br /&gt;            //&lt;br /&gt;            // An exception is made for Ctrl+Enter for multi-line texts, since&lt;br /&gt;            // a default selection event is not sent in this case. &lt;br /&gt;            if (text != null &amp;&amp; !text.isDisposed()&lt;br /&gt;                    &amp;&amp; (text.getStyle() &amp; SWT.MULTI) != 0) {&lt;br /&gt;                if ((keyEvent.stateMask &amp; SWT.CTRL) != 0) {&lt;br /&gt;                    super.keyReleaseOccured(keyEvent);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            return;&lt;br /&gt;        }&lt;br /&gt;        super.keyReleaseOccured(keyEvent);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 02 May 2007 10:34:32 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3944</guid>
      <author>lgersman (lars gersmann)</author>
    </item>
    <item>
      <title>content assist field descriptor implementation reusing my ContentAssistFieldCellEditor.</title>
      <link>http://snippets.dzone.com/posts/show/3943</link>
      <description>Using this class lets you easily configure a Eclipse IPropertySource with autocompletion fields.&lt;br /&gt;See my &lt;a href="http://snippets.dzone.com/posts/show/3944"&gt;ContentAssistFieldCellEditor implementation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import org.eclipse.jface.fieldassist.IContentProposalProvider;&lt;br /&gt;import org.eclipse.jface.viewers.CellEditor;&lt;br /&gt;import org.eclipse.swt.widgets.Composite;&lt;br /&gt;import org.eclipse.ui.views.properties.PropertyDescriptor;&lt;br /&gt;&lt;br /&gt;public class ContentAssistFieldDescriptor extends PropertyDescriptor &lt;br /&gt;{	&lt;br /&gt;	protected char[] completionProposalAutoActivationCharacters;&lt;br /&gt;	protected IContentProposalProvider contentProposalProvider;&lt;br /&gt;	    /**&lt;br /&gt;	     * Creates an property descriptor with the given id and display name.&lt;br /&gt;	     * &lt;br /&gt;	     * @param id the id of the property&lt;br /&gt;	     * @param displayName the name to display for the property&lt;br /&gt;	     */&lt;br /&gt;	public ContentAssistFieldDescriptor(Object id, String displayName, char[] completionProposalAutoActivationCharacters, IContentProposalProvider contentProposalProvider) &lt;br /&gt;	{&lt;br /&gt;        super( id, displayName);&lt;br /&gt;        &lt;br /&gt;        this.completionProposalAutoActivationCharacters = completionProposalAutoActivationCharacters;&lt;br /&gt;        this.contentProposalProvider = contentProposalProvider;&lt;br /&gt;    }&lt;br /&gt;	&lt;br /&gt;	    /**&lt;br /&gt;	     * The ContentAssistFieldPropertyDescriptor implementation of this &lt;br /&gt;	     * IPropertyDescriptor method creates and returns a new&lt;br /&gt;	     * TextCellEditor.&lt;br /&gt;	     * &lt;br /&gt;	     * The editor is configured with the current validator if there is one.&lt;br /&gt;	     * &lt;br /&gt;	     */&lt;br /&gt;    @Override&lt;br /&gt;    public CellEditor createPropertyEditor(Composite parent) &lt;br /&gt;    {&lt;br /&gt;    	ContentAssistFieldCellEditor editor = new ContentAssistFieldCellEditor( parent, completionProposalAutoActivationCharacters, contentProposalProvider);&lt;br /&gt;        if (getValidator() != null) &lt;br /&gt;        {&lt;br /&gt;	     editor.setValidator(getValidator());&lt;br /&gt;	}&lt;br /&gt;        return editor;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 02 May 2007 10:30:29 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3943</guid>
      <author>lgersman (lars gersmann)</author>
    </item>
    <item>
      <title>CSpinner for SWT</title>
      <link>http://snippets.dzone.com/posts/show/2557</link>
      <description>This is a simple Spinner component for SWT&lt;br /&gt;It's not complete and it's -for sure- not very eye-pleasing.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import org.eclipse.swt.SWT;&lt;br /&gt;import org.eclipse.swt.events.KeyAdapter;&lt;br /&gt;import org.eclipse.swt.events.KeyEvent;&lt;br /&gt;import org.eclipse.swt.events.SelectionAdapter;&lt;br /&gt;import org.eclipse.swt.events.SelectionEvent;&lt;br /&gt;import org.eclipse.swt.layout.GridData;&lt;br /&gt;import org.eclipse.swt.layout.GridLayout;&lt;br /&gt;import org.eclipse.swt.widgets.Composite;&lt;br /&gt;import org.eclipse.swt.widgets.Slider;&lt;br /&gt;import org.eclipse.swt.widgets.Text;&lt;br /&gt;&lt;br /&gt;public class CSpinner extends Composite {&lt;br /&gt;    private Text text;&lt;br /&gt;    private Slider slider;&lt;br /&gt;    private int value = 119;&lt;br /&gt;    &lt;br /&gt;    public CSpinner(Composite parent, int style) {&lt;br /&gt;        super(parent, SWT.BORDER | style);&lt;br /&gt;&lt;br /&gt;        GridLayout thisLayout = new GridLayout();&lt;br /&gt;        thisLayout.horizontalSpacing = 0;&lt;br /&gt;        thisLayout.numColumns = 2;&lt;br /&gt;        thisLayout.marginHeight = 0;&lt;br /&gt;        thisLayout.marginWidth = 0;&lt;br /&gt;        thisLayout.verticalSpacing = 0;&lt;br /&gt;        setLayout(thisLayout);&lt;br /&gt;        setLayoutData(new GridData(GridData.FILL_HORIZONTAL));&lt;br /&gt;        &lt;br /&gt;        text = new Text(this, SWT.NONE);&lt;br /&gt;        text.setText("" + value);&lt;br /&gt;        text.addKeyListener(new KeyAdapter() {&lt;br /&gt;            public void keyReleased(KeyEvent e) {&lt;br /&gt;                try {&lt;br /&gt;                    value = Integer.parseInt(text.getText());&lt;br /&gt;                    slider.setSelection(value);&lt;br /&gt;                    text.setBackground(new Color(getDisplay(), 255, 255, 255));&lt;br /&gt;                    text.setToolTipText("");&lt;br /&gt;                } catch(NumberFormatException e1) {&lt;br /&gt;                    text.setBackground(new Color(getDisplay(), 255, 192, 192));&lt;br /&gt;                    text.setToolTipText("Only integer values are accepted.");&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        });&lt;br /&gt;        text.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL));&lt;br /&gt;        slider = new Slider(this, SWT.VERTICAL);&lt;br /&gt;        slider.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;            public void widgetSelected(SelectionEvent e) {&lt;br /&gt;                text.setText("" + slider.getSelection());&lt;br /&gt;            }&lt;br /&gt;        });&lt;br /&gt;        slider.setValues(value, 0, 65535, 1, 1, 10);&lt;br /&gt;        GridData sliderLData = new GridData();&lt;br /&gt;        sliderLData.widthHint = 14;&lt;br /&gt;        sliderLData.heightHint = 21;&lt;br /&gt;        slider.setLayoutData(sliderLData);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public String getText() {&lt;br /&gt;        return text.getText();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 07 Sep 2006 13:43:36 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2557</guid>
      <author>cringe ()</author>
    </item>
    <item>
      <title>TableEditor in SWT</title>
      <link>http://snippets.dzone.com/posts/show/2549</link>
      <description>This code shows some table cell editors for SWT&lt;br /&gt;it's not complete, but you can get a hint&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.Random;&lt;br /&gt;&lt;br /&gt;import org.eclipse.swt.SWT;&lt;br /&gt;import org.eclipse.swt.custom.TableEditor;&lt;br /&gt;import org.eclipse.swt.events.ModifyEvent;&lt;br /&gt;import org.eclipse.swt.events.ModifyListener;&lt;br /&gt;import org.eclipse.swt.events.SelectionAdapter;&lt;br /&gt;import org.eclipse.swt.events.SelectionEvent;&lt;br /&gt;import org.eclipse.swt.graphics.Color;&lt;br /&gt;import org.eclipse.swt.graphics.Image;&lt;br /&gt;import org.eclipse.swt.graphics.Point;&lt;br /&gt;import org.eclipse.swt.graphics.RGB;&lt;br /&gt;import org.eclipse.swt.graphics.Rectangle;&lt;br /&gt;import org.eclipse.swt.layout.FillLayout;&lt;br /&gt;import org.eclipse.swt.widgets.Button;&lt;br /&gt;import org.eclipse.swt.widgets.ColorDialog;&lt;br /&gt;import org.eclipse.swt.widgets.Control;&lt;br /&gt;import org.eclipse.swt.widgets.Display;&lt;br /&gt;import org.eclipse.swt.widgets.Event;&lt;br /&gt;import org.eclipse.swt.widgets.Listener;&lt;br /&gt;import org.eclipse.swt.widgets.Shell;&lt;br /&gt;import org.eclipse.swt.widgets.Table;&lt;br /&gt;import org.eclipse.swt.widgets.TableColumn;&lt;br /&gt;import org.eclipse.swt.widgets.TableItem;&lt;br /&gt;import org.eclipse.swt.widgets.Text;&lt;br /&gt;&lt;br /&gt;public class TableTester {&lt;br /&gt;	&lt;br /&gt;	private Display display;&lt;br /&gt;	private Shell shell;&lt;br /&gt;	private HashMap&lt;String, Image&gt; hashImages;&lt;br /&gt;	private Table table;&lt;br /&gt;	&lt;br /&gt;	private Color GRAY;&lt;br /&gt;	private Color WHITE;&lt;br /&gt;	private int EDITABLECOLUMN;&lt;br /&gt;	&lt;br /&gt;	public TableTester() {&lt;br /&gt;		display = new Display();&lt;br /&gt;		shell = new Shell(display);&lt;br /&gt;		&lt;br /&gt;		init();&lt;br /&gt;		createGUI();&lt;br /&gt;		&lt;br /&gt;		shell.open();&lt;br /&gt;		&lt;br /&gt;		while(!shell.isDisposed()) {&lt;br /&gt;			if(!display.readAndDispatch()) {&lt;br /&gt;				display.sleep();&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void init() {&lt;br /&gt;		hashImages = new HashMap&lt;String, Image&gt;();&lt;br /&gt;		hashImages.put("help", new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\help.png"));&lt;br /&gt;		hashImages.put("about", new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\about_kde.png"));&lt;br /&gt;		&lt;br /&gt;		GRAY = new Color(display, 220, 220, 220);&lt;br /&gt;		WHITE = new Color(display, 255, 255, 255);&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void createGUI() {&lt;br /&gt;		shell.setLayout(new FillLayout());&lt;br /&gt;		shell.setText("TableTester");&lt;br /&gt;		&lt;br /&gt;		shell.setImage(hashImages.get("about"));&lt;br /&gt;		&lt;br /&gt;		table = new Table(shell, SWT.SINGLE | SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.H_SCROLL | SWT.VIRTUAL);&lt;br /&gt;		table.setHeaderVisible(true);&lt;br /&gt;		table.setLinesVisible(true);&lt;br /&gt;		&lt;br /&gt;		table.addListener (SWT.MouseDown, new Listener () {&lt;br /&gt;			public void handleEvent (Event event) {&lt;br /&gt;				Rectangle clientArea = table.getClientArea ();&lt;br /&gt;				Point selectedPoint = new Point (event.x, event.y);&lt;br /&gt;				int index = table.getTopIndex ();&lt;br /&gt;				while (index &lt; table.getItemCount ()) {&lt;br /&gt;					boolean visible = false;&lt;br /&gt;					TableItem item = table.getItem (index);&lt;br /&gt;					for (int i=0; i &lt; table.getColumnCount(); i++) {&lt;br /&gt;						Rectangle rect = item.getBounds (i);&lt;br /&gt;						if (rect.contains (selectedPoint)) {&lt;br /&gt;//							System.out.println ("Item " + index + "-" + i);&lt;br /&gt;							EDITABLECOLUMN = i;&lt;br /&gt;						}&lt;br /&gt;						if (!visible &amp;&amp; rect.intersects (clientArea)) {&lt;br /&gt;							visible = true;&lt;br /&gt;						}&lt;br /&gt;					}&lt;br /&gt;					if (!visible) return;&lt;br /&gt;					index++;&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		final TableEditor editor = new TableEditor(table);&lt;br /&gt;		//The editor must have the same size as the cell and must&lt;br /&gt;		//not be any smaller than 50 pixels.&lt;br /&gt;		editor.horizontalAlignment = SWT.LEFT;&lt;br /&gt;		editor.grabHorizontal = true;&lt;br /&gt;		editor.minimumWidth = 50;&lt;br /&gt;		&lt;br /&gt;		table.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				// Clean up any previous editor control&lt;br /&gt;				Control oldEditor = editor.getEditor();&lt;br /&gt;				if (oldEditor != null) oldEditor.dispose();&lt;br /&gt;		&lt;br /&gt;				// Identify the selected row&lt;br /&gt;				TableItem item = (TableItem)e.item;&lt;br /&gt;				if (item == null) {&lt;br /&gt;					return;&lt;br /&gt;				}&lt;br /&gt;&lt;br /&gt;				// The control that will be the editor must be a child of the Table&lt;br /&gt;				if(EDITABLECOLUMN == 0) { // boolean&lt;br /&gt;					if("true".equalsIgnoreCase(item.getText())) {&lt;br /&gt;						final Button newEditor = new Button(table, SWT.CHECK);&lt;br /&gt;						newEditor.setText("Click to change");&lt;br /&gt;						newEditor.setSelection(true);&lt;br /&gt;						newEditor.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;							public void widgetSelected(SelectionEvent e) {&lt;br /&gt;								editor.getItem().setText("" + newEditor.getSelection());&lt;br /&gt;							}&lt;br /&gt;						});&lt;br /&gt;						newEditor.setFocus();&lt;br /&gt;						editor.setEditor(newEditor, item, EDITABLECOLUMN);&lt;br /&gt;					} else {&lt;br /&gt;						final Button newEditor = new Button(table, SWT.CHECK);&lt;br /&gt;						newEditor.setText("Click to change");&lt;br /&gt;						newEditor.setSelection(false);&lt;br /&gt;						newEditor.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;							public void widgetSelected(SelectionEvent e) {&lt;br /&gt;								editor.getItem().setText("" + newEditor.getSelection());&lt;br /&gt;							}&lt;br /&gt;						});&lt;br /&gt;						newEditor.setFocus();&lt;br /&gt;						editor.setEditor(newEditor, item, EDITABLECOLUMN);&lt;br /&gt;					}&lt;br /&gt;				} else if(EDITABLECOLUMN == 3) { // password string&lt;br /&gt;					Button newEditor = new Button(table, SWT.NONE);&lt;br /&gt;					newEditor.setText("Generate");&lt;br /&gt;					newEditor.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;						public void widgetSelected(SelectionEvent e) {&lt;br /&gt;							String s = Utilities.getRandomString(12, true, true, true, true);&lt;br /&gt;							editor.getItem().setText(EDITABLECOLUMN, s);&lt;br /&gt;						}&lt;br /&gt;					});&lt;br /&gt;					newEditor.setFocus();&lt;br /&gt;					editor.setEditor(newEditor, item, EDITABLECOLUMN);&lt;br /&gt;				} else if(EDITABLECOLUMN == 4) { // color&lt;br /&gt;					ColorDialog newEditor = new ColorDialog(shell, SWT.NONE);&lt;br /&gt;					String[] data = item.getText(EDITABLECOLUMN).split(",");&lt;br /&gt;					newEditor.setRGB(new RGB(Integer.parseInt(data[0].trim()),&lt;br /&gt;							Integer.parseInt(data[1].trim()),&lt;br /&gt;							Integer.parseInt(data[2].trim())));&lt;br /&gt;					RGB rgb = newEditor.open();&lt;br /&gt;					item.setText(EDITABLECOLUMN, rgb.red + "," + rgb.green + "," + rgb.blue);&lt;br /&gt;				} else {&lt;br /&gt;					Text newEditor = new Text(table, SWT.NONE);&lt;br /&gt;					newEditor.setText(item.getText(EDITABLECOLUMN));&lt;br /&gt;					newEditor.addModifyListener(new ModifyListener() {&lt;br /&gt;						public void modifyText(ModifyEvent me) {&lt;br /&gt;							Text text = (Text)editor.getEditor();&lt;br /&gt;							editor.getItem().setText(EDITABLECOLUMN, text.getText());&lt;br /&gt;						}&lt;br /&gt;					});&lt;br /&gt;					newEditor.selectAll();&lt;br /&gt;					newEditor.setFocus();&lt;br /&gt;					editor.setEditor(newEditor, item, EDITABLECOLUMN);&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		fillWithData();&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void fillWithData() {&lt;br /&gt;		TableColumn col = new TableColumn(table, SWT.NONE);&lt;br /&gt;		col.setText("boolean");&lt;br /&gt;		col.setWidth(100);&lt;br /&gt;		&lt;br /&gt;		col = new TableColumn(table, SWT.NONE);&lt;br /&gt;		col.setText("Integer");&lt;br /&gt;		col.setWidth(100);&lt;br /&gt;		&lt;br /&gt;		col = new TableColumn(table, SWT.NONE);&lt;br /&gt;		col.setText("Float");&lt;br /&gt;		col.setWidth(100);&lt;br /&gt;		&lt;br /&gt;		col = new TableColumn(table, SWT.NONE);&lt;br /&gt;		col.setText("Password");&lt;br /&gt;		col.setWidth(100);&lt;br /&gt;&lt;br /&gt;		col = new TableColumn(table, SWT.NONE);&lt;br /&gt;		col.setText("Color");&lt;br /&gt;		col.setWidth(100);&lt;br /&gt;		&lt;br /&gt;		TableItem row;&lt;br /&gt;		Random r = new Random(System.nanoTime());&lt;br /&gt;		for (int i = 0; i &lt; 1000; i++) {&lt;br /&gt;			row = new TableItem(table, SWT.NONE);&lt;br /&gt;			row.setText(new String[] {&lt;br /&gt;					"" + r.nextBoolean(),&lt;br /&gt;					"" + r.nextInt(),&lt;br /&gt;					"" + r.nextFloat(),&lt;br /&gt;					"" + Utilities.getRandomString(12, true, true, true, true),&lt;br /&gt;					"" + r.nextInt(255) + "," + r.nextInt(255) + "," + r.nextInt(255)});&lt;br /&gt;			row.setBackground((i % 2 == 0) ? WHITE : GRAY);&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args) {&lt;br /&gt;		new TableTester();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 05 Sep 2006 12:59:21 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2549</guid>
      <author>cringe ()</author>
    </item>
    <item>
      <title>Simple Wizard in SWT</title>
      <link>http://snippets.dzone.com/posts/show/2504</link>
      <description>// This code is an example for StackLayout&lt;br /&gt;&lt;br /&gt;import java.util.Vector;&lt;br /&gt;&lt;br /&gt;import org.eclipse.swt.SWT;&lt;br /&gt;import org.eclipse.swt.custom.StackLayout;&lt;br /&gt;import org.eclipse.swt.graphics.Image;&lt;br /&gt;import org.eclipse.swt.layout.FillLayout;&lt;br /&gt;import org.eclipse.swt.layout.GridData;&lt;br /&gt;import org.eclipse.swt.layout.GridLayout;&lt;br /&gt;import org.eclipse.swt.widgets.Button;&lt;br /&gt;import org.eclipse.swt.widgets.Combo;&lt;br /&gt;import org.eclipse.swt.widgets.Composite;&lt;br /&gt;import org.eclipse.swt.widgets.Control;&lt;br /&gt;import org.eclipse.swt.widgets.Display;&lt;br /&gt;import org.eclipse.swt.widgets.Event;&lt;br /&gt;import org.eclipse.swt.widgets.Group;&lt;br /&gt;import org.eclipse.swt.widgets.Label;&lt;br /&gt;import org.eclipse.swt.widgets.Listener;&lt;br /&gt;import org.eclipse.swt.widgets.Shell;&lt;br /&gt;import org.eclipse.swt.widgets.Text;&lt;br /&gt;&lt;br /&gt;public class Wizard {&lt;br /&gt;&lt;br /&gt;	private Display display;&lt;br /&gt;	private Shell shell;&lt;br /&gt;	private int index;&lt;br /&gt;	private Button prev;&lt;br /&gt;	private Button next;&lt;br /&gt;	private Vector&lt;Control&gt; PAGES;&lt;br /&gt;	private Composite wizardPanel;&lt;br /&gt;	private StackLayout wizardLayout;&lt;br /&gt;	private Vector&lt;String&gt; TITLES;&lt;br /&gt;&lt;br /&gt;	public Wizard() {&lt;br /&gt;		display = new Display();&lt;br /&gt;		shell = new Shell(display);&lt;br /&gt;&lt;br /&gt;		shell.setText("Wizard");&lt;br /&gt;		&lt;br /&gt;		init();&lt;br /&gt;		createGUI();&lt;br /&gt;		&lt;br /&gt;		fillPages();&lt;br /&gt;		setSize(500, 400);&lt;br /&gt;		&lt;br /&gt;		shell.open();&lt;br /&gt;		&lt;br /&gt;		while(!shell.isDisposed()) {&lt;br /&gt;			if(!display.readAndDispatch()) {&lt;br /&gt;				display.sleep();&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		display.dispose();&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void fillPages() {&lt;br /&gt;		Button label = new Button(shell, SWT.BORDER);&lt;br /&gt;		label.setText("Hello, World 0!");&lt;br /&gt;		addPage(label, "Page 1");&lt;br /&gt;		&lt;br /&gt;		label = new Button(shell, SWT.BORDER);&lt;br /&gt;		label.setText("Hello, World 1!");&lt;br /&gt;		addPage(label, "This is page #2!");&lt;br /&gt;		&lt;br /&gt;		Group group = new Group(shell, SWT.NONE);&lt;br /&gt;		group.setLayout(new GridLayout(2, false));&lt;br /&gt;		&lt;br /&gt;		Label imgLabel = new Label(group, SWT.BORDER);&lt;br /&gt;		GridData gd = new GridData(GridData.FILL_VERTICAL);&lt;br /&gt;		gd.verticalSpan = 2;&lt;br /&gt;		imgLabel.setLayoutData(gd);&lt;br /&gt;		imgLabel.setImage(new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\simwizard.jpg"));&lt;br /&gt;		&lt;br /&gt;		Text text = new Text(group, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL);&lt;br /&gt;		text.setText("Hier steht ein Hinweis.\nAuch &#252;ber mehrere\n\tZeilen, mit Sonderzeichen!");&lt;br /&gt;		text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));&lt;br /&gt;		&lt;br /&gt;		Group ng = new Group(group, SWT.NONE);&lt;br /&gt;		ng.setLayout(new GridLayout(2, false));&lt;br /&gt;		ng.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL | GridData.GRAB_HORIZONTAL));&lt;br /&gt;		&lt;br /&gt;		Label l = new Label(ng, SWT.NONE);&lt;br /&gt;		l.setLayoutData(new GridData());&lt;br /&gt;		l.setText("Combo:");&lt;br /&gt;		Combo combo = new Combo(ng, SWT.BORDER);&lt;br /&gt;		combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));&lt;br /&gt;		combo.setItems(new String[] {"foo", "bar", "baz"});&lt;br /&gt;		&lt;br /&gt;		l = new Label(ng, SWT.NONE);&lt;br /&gt;		l.setLayoutData(new GridData());&lt;br /&gt;		l.setText("Text:");&lt;br /&gt;		Text t = new Text(ng, SWT.BORDER);&lt;br /&gt;		t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));&lt;br /&gt;		t.setText("foo");&lt;br /&gt;&lt;br /&gt;		l = new Label(ng, SWT.NONE);&lt;br /&gt;		l.setLayoutData(new GridData());&lt;br /&gt;		l.setText("Radio:");&lt;br /&gt;		&lt;br /&gt;		Group g = new Group(ng, SWT.NONE);&lt;br /&gt;		g.setLayout(new FillLayout());&lt;br /&gt;		Button r = new Button(g, SWT.RADIO);&lt;br /&gt;		r.setText("Radio #1");&lt;br /&gt;		r = new Button(g, SWT.RADIO);&lt;br /&gt;		r.setText("Radio #2");&lt;br /&gt;		r = new Button(g, SWT.RADIO);&lt;br /&gt;		r.setText("Radio #3");&lt;br /&gt;&lt;br /&gt;		l = new Label(ng, SWT.NONE);&lt;br /&gt;		l.setLayoutData(new GridData());&lt;br /&gt;		l.setText("Check:");&lt;br /&gt;		&lt;br /&gt;		g = new Group(ng, SWT.NONE);&lt;br /&gt;		g.setLayout(new FillLayout());&lt;br /&gt;		r = new Button(g, SWT.CHECK);&lt;br /&gt;		r.setText("Check #1");&lt;br /&gt;		r = new Button(g, SWT.CHECK);&lt;br /&gt;		r.setText("Check #2");&lt;br /&gt;		r = new Button(g, SWT.CHECK);&lt;br /&gt;		r.setText("Check #3");&lt;br /&gt;&lt;br /&gt;		addPage(group, "This is filled with controls.");&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private void init() {&lt;br /&gt;		index = 0; // index for current page&lt;br /&gt;		PAGES = new Vector&lt;Control&gt;();&lt;br /&gt;		TITLES = new Vector&lt;String&gt;();&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void createGUI() {&lt;br /&gt;		shell.setLayout(new GridLayout(2, false));&lt;br /&gt;		&lt;br /&gt;		wizardPanel = new Composite(shell, SWT.NONE);&lt;br /&gt;		GridData gd = new GridData(GridData.FILL_BOTH);&lt;br /&gt;		gd.horizontalSpan = 2;&lt;br /&gt;		wizardPanel.setLayoutData(gd);&lt;br /&gt;		&lt;br /&gt;		wizardLayout = new StackLayout();&lt;br /&gt;		wizardPanel.setLayout(wizardLayout);&lt;br /&gt;			&lt;br /&gt;		prev = new Button(shell, SWT.PUSH);&lt;br /&gt;		next = new Button(shell, SWT.PUSH);&lt;br /&gt;		next.setText("Next &gt;");&lt;br /&gt;		next.setLayoutData(new GridData());&lt;br /&gt;		next.addListener(SWT.Selection, new Listener() {&lt;br /&gt;			public void handleEvent(Event e) {&lt;br /&gt;				next();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		next.setEnabled(false);&lt;br /&gt;		&lt;br /&gt;		prev.setText("&lt; Previous");&lt;br /&gt;		prev.setLayoutData(new GridData());&lt;br /&gt;		prev.addListener(SWT.Selection, new Listener() {&lt;br /&gt;			public void handleEvent(Event e) {&lt;br /&gt;				previous();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		prev.setEnabled(false);&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void next() {&lt;br /&gt;		if(index == PAGES.size()-1 &amp;&amp; "finish".equalsIgnoreCase(next.getText())) {&lt;br /&gt;			System.out.println("finished!");&lt;br /&gt;			shell.close();&lt;br /&gt;			display.dispose();&lt;br /&gt;			return;&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		if(index &lt; PAGES.size()-1) {&lt;br /&gt;			index += 1;&lt;br /&gt;			wizardLayout.topControl = PAGES.get(index);&lt;br /&gt;			shell.setText("Wizard - " + TITLES.get(index));&lt;br /&gt;			wizardPanel.layout();&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		if(index-1 &gt;= 0) {&lt;br /&gt;			prev.setEnabled(true);&lt;br /&gt;		}&lt;br /&gt;		if(index+1 &gt;= PAGES.size()) {&lt;br /&gt;//			next.setEnabled(false);&lt;br /&gt;			next.setText("Finish");&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void previous() {&lt;br /&gt;		if(index &gt; 0) {&lt;br /&gt;			index -= 1;&lt;br /&gt;			wizardLayout.topControl = PAGES.get(index);&lt;br /&gt;			shell.setText("Wizard - " + TITLES.get(index));&lt;br /&gt;			wizardPanel.layout();&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		if(index+1 &lt; PAGES.size()) {&lt;br /&gt;//			next.setEnabled(true);&lt;br /&gt;			next.setText("Next &gt;");&lt;br /&gt;		}&lt;br /&gt;		if(index-1 &lt; 0) {&lt;br /&gt;			prev.setEnabled(false);&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	public void addPage(Control c) {&lt;br /&gt;		addPage(c, "Page");&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	public void addPage(Control c, String title) {&lt;br /&gt;		// auf Wizardpanel umsetzen&lt;br /&gt;		c.setParent(wizardPanel);&lt;br /&gt;		&lt;br /&gt;		PAGES.addElement(c);&lt;br /&gt;		TITLES.addElement(title);&lt;br /&gt;		wizardLayout.topControl = PAGES.get(0);&lt;br /&gt;		shell.setText("Wizard - " + TITLES.get(0));&lt;br /&gt;		if(PAGES.size() &gt; 0) {&lt;br /&gt;			next.setEnabled(true);&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	public int getPageCount() {&lt;br /&gt;		return PAGES.size();&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	public void setSize(int width, int height) {&lt;br /&gt;		shell.setSize(width, height);&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	public static void main(String[] args) {&lt;br /&gt;		new Wizard();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;</description>
      <pubDate>Thu, 31 Aug 2006 12:46:31 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2504</guid>
      <author>cringe ()</author>
    </item>
    <item>
      <title>DragAndDrop SWT example</title>
      <link>http://snippets.dzone.com/posts/show/2499</link>
      <description>// This code implements a very basic Drag'n'Drop&lt;br /&gt;// you can drag the labels from the top into the canvas&lt;br /&gt;// and the text will be drawn there. The positioning isn't exact&lt;br /&gt;// but who cares...&lt;br /&gt;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;&lt;br /&gt;import org.eclipse.swt.SWT;&lt;br /&gt;import org.eclipse.swt.dnd.DND;&lt;br /&gt;import org.eclipse.swt.dnd.DragSource;&lt;br /&gt;import org.eclipse.swt.dnd.DragSourceEvent;&lt;br /&gt;import org.eclipse.swt.dnd.DragSourceListener;&lt;br /&gt;import org.eclipse.swt.dnd.DropTarget;&lt;br /&gt;import org.eclipse.swt.dnd.DropTargetEvent;&lt;br /&gt;import org.eclipse.swt.dnd.DropTargetListener;&lt;br /&gt;import org.eclipse.swt.dnd.TextTransfer;&lt;br /&gt;import org.eclipse.swt.dnd.Transfer;&lt;br /&gt;import org.eclipse.swt.graphics.GC;&lt;br /&gt;import org.eclipse.swt.graphics.Image;&lt;br /&gt;import org.eclipse.swt.layout.GridData;&lt;br /&gt;import org.eclipse.swt.layout.GridLayout;&lt;br /&gt;import org.eclipse.swt.widgets.Canvas;&lt;br /&gt;import org.eclipse.swt.widgets.Display;&lt;br /&gt;import org.eclipse.swt.widgets.Label;&lt;br /&gt;import org.eclipse.swt.widgets.Shell;&lt;br /&gt;&lt;br /&gt;public class DragAndDropTool {&lt;br /&gt;&lt;br /&gt;	private Display display;&lt;br /&gt;	private Shell shell;&lt;br /&gt;	private HashMap&lt;String, Image&gt; hashImages;&lt;br /&gt;	private Label drag1;&lt;br /&gt;	private Label drag2;&lt;br /&gt;	private Label drag3;&lt;br /&gt;	private Canvas text;&lt;br /&gt;&lt;br /&gt;	public DragAndDropTool() {&lt;br /&gt;		// Display &amp; Shell holen&lt;br /&gt;		display = new Display();&lt;br /&gt;		shell = new Shell(display);&lt;br /&gt;&lt;br /&gt;		shell.setText("DnD Toolbar");&lt;br /&gt;		shell.setSize(500, 300);&lt;br /&gt;		&lt;br /&gt;		init();&lt;br /&gt;		createGUI();&lt;br /&gt;		&lt;br /&gt;		// Shell &#246;ffnen&lt;br /&gt;		shell.open();&lt;br /&gt;		&lt;br /&gt;		// Event-Schleife starten&lt;br /&gt;		while(!shell.isDisposed()) {&lt;br /&gt;			if(!display.readAndDispatch()) {&lt;br /&gt;				display.sleep();&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void init() {&lt;br /&gt;		hashImages = new HashMap&lt;String, Image&gt;();&lt;br /&gt;		hashImages.put("action", new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\aktion.png"));&lt;br /&gt;		hashImages.put("help", new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\help.png"));&lt;br /&gt;		hashImages.put("about", new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\about_kde.png"));		&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private void createGUI() {&lt;br /&gt;		shell.setLayout(new GridLayout(3, false));&lt;br /&gt;&lt;br /&gt;		drag1 = new Label(shell, SWT.BORDER);&lt;br /&gt;		drag1.setText("drag source #1");&lt;br /&gt;		drag1.setLayoutData(new GridData());&lt;br /&gt;		DragSource dragSource1 = new DragSource(drag1, DND.DROP_COPY);&lt;br /&gt;		Transfer[] transfers1 = new Transfer[] {TextTransfer.getInstance()};&lt;br /&gt;		dragSource1.setTransfer(transfers1);&lt;br /&gt;		dragSource1.addDragListener(new DragSourceListener() {&lt;br /&gt;			public void dragStart(DragSourceEvent event) {&lt;br /&gt;				if(drag1.getText().length() == 0) {&lt;br /&gt;					event.doit = false;&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;&lt;br /&gt;			public void dragSetData(DragSourceEvent event) {&lt;br /&gt;				if (TextTransfer.getInstance().isSupportedType(event.dataType)) {&lt;br /&gt;					event.data = drag1.getText();&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;&lt;br /&gt;			public void dragFinished(DragSourceEvent event) {}&lt;br /&gt;		});&lt;br /&gt;&lt;br /&gt;		drag2 = new Label(shell, SWT.BORDER);&lt;br /&gt;		drag2.setText("drag source #2");&lt;br /&gt;		drag2.setLayoutData(new GridData());&lt;br /&gt;		DragSource dragSource2 = new DragSource(drag2, DND.DROP_COPY);&lt;br /&gt;		Transfer[] transfers2 = new Transfer[] {TextTransfer.getInstance()};&lt;br /&gt;		dragSource2.setTransfer(transfers2);&lt;br /&gt;		dragSource2.addDragListener(new DragSourceListener() {&lt;br /&gt;			public void dragStart(DragSourceEvent event) {&lt;br /&gt;				if(drag2.getText().length() == 0) {&lt;br /&gt;					event.doit = false;&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;&lt;br /&gt;			public void dragSetData(DragSourceEvent event) {&lt;br /&gt;				if (TextTransfer.getInstance().isSupportedType(event.dataType)) {&lt;br /&gt;					event.data = drag2.getText();&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;&lt;br /&gt;			public void dragFinished(DragSourceEvent event) {}&lt;br /&gt;		});&lt;br /&gt;&lt;br /&gt;		drag3 = new Label(shell, SWT.BORDER);&lt;br /&gt;		drag3.setText("drag source #3");&lt;br /&gt;		drag3.setLayoutData(new GridData());&lt;br /&gt;		DragSource dragSource3 = new DragSource(drag3, DND.DROP_COPY | DND.DROP_DEFAULT);&lt;br /&gt;		Transfer[] transfers3 = new Transfer[] {TextTransfer.getInstance()};&lt;br /&gt;		dragSource3.setTransfer(transfers3);&lt;br /&gt;		dragSource3.addDragListener(new DragSourceListener() {&lt;br /&gt;			public void dragStart(DragSourceEvent event) {&lt;br /&gt;				if(drag3.getText().length() == 0) {&lt;br /&gt;					event.doit = false;&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;&lt;br /&gt;			public void dragSetData(DragSourceEvent event) {&lt;br /&gt;				if (TextTransfer.getInstance().isSupportedType(event.dataType)) {&lt;br /&gt;					event.data = drag3.getText();&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;&lt;br /&gt;			public void dragFinished(DragSourceEvent event) {}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		&lt;br /&gt;//		text = new Text(shell, SWT.BORDER | SWT.MULTI);&lt;br /&gt;		text = new Canvas(shell, SWT.BORDER);&lt;br /&gt;		GridData gd = new GridData(GridData.FILL_BOTH);&lt;br /&gt;		gd.horizontalSpan = 3;&lt;br /&gt;		text.setLayoutData(gd);&lt;br /&gt;		DropTarget dropTarget = new DropTarget(text, DND.DROP_COPY | DND.DROP_DEFAULT);&lt;br /&gt;		Transfer[] types = new Transfer[] {TextTransfer.getInstance()};&lt;br /&gt;		dropTarget.setTransfer(types);&lt;br /&gt;		dropTarget.addDropListener(new DropTargetListener() {&lt;br /&gt;			public void dragEnter(DropTargetEvent event) {&lt;br /&gt;				if(event.detail == DND.DROP_DEFAULT) {&lt;br /&gt;					if((event.operations &amp; DND.DROP_COPY) != 0) {&lt;br /&gt;						event.detail = DND.DROP_COPY;&lt;br /&gt;					} else {&lt;br /&gt;						event.detail = DND.DROP_NONE;&lt;br /&gt;					}&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;&lt;br /&gt;			public void dragLeave(DropTargetEvent event) {}&lt;br /&gt;&lt;br /&gt;			public void dragOperationChanged(DropTargetEvent event) {}&lt;br /&gt;&lt;br /&gt;			public void dragOver(DropTargetEvent event) {&lt;br /&gt;			}&lt;br /&gt;&lt;br /&gt;			public void drop(DropTargetEvent event) {}&lt;br /&gt;&lt;br /&gt;			public void dropAccept(DropTargetEvent event) {&lt;br /&gt;				if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) {&lt;br /&gt;					String d = (String)TextTransfer.getInstance().nativeToJava(event.currentDataType);&lt;br /&gt;//					text.append(d + '\n');&lt;br /&gt;					GC gc = new GC(text);&lt;br /&gt;					int x = event.x - shell.getBounds().x - text.getBounds().x;&lt;br /&gt;					int y = event.y - shell.getBounds().y - text.getBounds().y;&lt;br /&gt;//					System.err.println("drop x=" + (event.x - shell.getBounds().x - text.getBounds().x) + ",y=" + (event.y - shell.getBounds().y - text.getBounds().y));&lt;br /&gt;					gc.drawString(d, x, y);&lt;br /&gt;					gc.dispose();&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args) {&lt;br /&gt;		new DragAndDropTool();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;</description>
      <pubDate>Wed, 30 Aug 2006 15:04:07 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2499</guid>
      <author>cringe ()</author>
    </item>
    <item>
      <title>FileToImageGenerator</title>
      <link>http://snippets.dzone.com/posts/show/2498</link>
      <description>// creates a simple colored image out of a text file&lt;br /&gt;&lt;br /&gt;import java.io.BufferedReader;&lt;br /&gt;import java.io.File;&lt;br /&gt;import java.io.FileNotFoundException;&lt;br /&gt;import java.io.FileReader;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.util.Random;&lt;br /&gt;&lt;br /&gt;import org.eclipse.swt.SWT;&lt;br /&gt;import org.eclipse.swt.events.SelectionAdapter;&lt;br /&gt;import org.eclipse.swt.events.SelectionEvent;&lt;br /&gt;import org.eclipse.swt.graphics.Color;&lt;br /&gt;import org.eclipse.swt.graphics.GC;&lt;br /&gt;import org.eclipse.swt.graphics.Rectangle;&lt;br /&gt;import org.eclipse.swt.layout.GridData;&lt;br /&gt;import org.eclipse.swt.layout.GridLayout;&lt;br /&gt;import org.eclipse.swt.widgets.Button;&lt;br /&gt;import org.eclipse.swt.widgets.Canvas;&lt;br /&gt;import org.eclipse.swt.widgets.Display;&lt;br /&gt;import org.eclipse.swt.widgets.FileDialog;&lt;br /&gt;import org.eclipse.swt.widgets.Label;&lt;br /&gt;import org.eclipse.swt.widgets.Shell;&lt;br /&gt;import org.eclipse.swt.widgets.Text;&lt;br /&gt;&lt;br /&gt;public class FileToImageGenerator {&lt;br /&gt;&lt;br /&gt;	private Display display;&lt;br /&gt;	private Shell shell;&lt;br /&gt;	private File imgFile;&lt;br /&gt;	private Text textFile;&lt;br /&gt;	private Canvas canvas;&lt;br /&gt;	private Color clearColor;&lt;br /&gt;&lt;br /&gt;	public FileToImageGenerator() {&lt;br /&gt;		display = new Display();&lt;br /&gt;		shell = new Shell(display);&lt;br /&gt;		&lt;br /&gt;//		shell.setSize(500, 300);&lt;br /&gt;		shell.setText("FileToImageGenerator");&lt;br /&gt;&lt;br /&gt;		createGUI();&lt;br /&gt;		&lt;br /&gt;		shell.open();&lt;br /&gt;		&lt;br /&gt;		while(!shell.isDisposed()) {&lt;br /&gt;			if(!display.readAndDispatch()) {&lt;br /&gt;				display.sleep();&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void createGUI() {&lt;br /&gt;		shell.setLayout(new GridLayout(3, false));&lt;br /&gt;		&lt;br /&gt;		Label label = new Label(shell, SWT.NONE);&lt;br /&gt;		label.setText("File:");&lt;br /&gt;		label.setLayoutData(new GridData());&lt;br /&gt;		&lt;br /&gt;		textFile = new Text(shell, SWT.BORDER | SWT.READ_ONLY);&lt;br /&gt;		textFile.setText("");&lt;br /&gt;		textFile.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));&lt;br /&gt;		&lt;br /&gt;		Button b = new Button(shell, SWT.BORDER);&lt;br /&gt;		b.setText("Open...");&lt;br /&gt;		b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				FileDialog dlg = new FileDialog(shell);&lt;br /&gt;				dlg.open();&lt;br /&gt;				&lt;br /&gt;				imgFile = new File(dlg.getFilterPath() + File.separator + dlg.getFileName());&lt;br /&gt;				&lt;br /&gt;				if(imgFile.isDirectory()) {&lt;br /&gt;					imgFile = null;&lt;br /&gt;				} else {&lt;br /&gt;					generateImageFromFile(imgFile);&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		b.setLayoutData(new GridData());&lt;br /&gt;		b.setFocus();&lt;br /&gt;		&lt;br /&gt;		canvas = new Canvas(shell, SWT.BORDER);&lt;br /&gt;		GridData gd = new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL);&lt;br /&gt;		gd.horizontalSpan = 3;&lt;br /&gt;		canvas.setLayoutData(gd);&lt;br /&gt;		clearColor = canvas.getBackground();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private void generateImageFromFile(File i) {&lt;br /&gt;		textFile.setText(i.getAbsolutePath());&lt;br /&gt;&lt;br /&gt;		Rectangle bounds = canvas.getBounds();&lt;br /&gt;		GC gc = new GC(canvas);&lt;br /&gt;		canvas.setBackground(clearColor);&lt;br /&gt;		gc.fillRectangle(0, 0, bounds.width, bounds.height);&lt;br /&gt;		&lt;br /&gt;		Random r = new Random(System.nanoTime());&lt;br /&gt;		&lt;br /&gt;		try {&lt;br /&gt;			BufferedReader fr = new BufferedReader(new FileReader(i.getAbsoluteFile()));&lt;br /&gt;			int b = -1;&lt;br /&gt;			int x = 0;&lt;br /&gt;			int y = 0;&lt;br /&gt;			while((b = fr.read()) != -1) {&lt;br /&gt;//				System.err.print((char)b);&lt;br /&gt;//				gc.drawString("" + (char)b, x, y);&lt;br /&gt;				gc.setBackground(new Color(display, r.nextInt(255), r.nextInt(255), r.nextInt(255)));&lt;br /&gt;				gc.fillRectangle(x, y, 10, 15);&lt;br /&gt;				&lt;br /&gt;				x += 10;&lt;br /&gt;//				if(b == '\n') {&lt;br /&gt;				if(x &gt;= bounds.width) {&lt;br /&gt;					x = 0;&lt;br /&gt;					y += 15;&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;		} catch (FileNotFoundException e) {&lt;br /&gt;			// TODO Auto-generated catch block&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		} catch (IOException e) {&lt;br /&gt;			// TODO Auto-generated catch block&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args) {&lt;br /&gt;		new FileToImageGenerator();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;</description>
      <pubDate>Wed, 30 Aug 2006 13:32:50 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2498</guid>
      <author>cringe ()</author>
    </item>
    <item>
      <title>OpenURL in SWT</title>
      <link>http://snippets.dzone.com/posts/show/2497</link>
      <description>import java.io.IOException;&lt;br /&gt;import java.io.InputStream;&lt;br /&gt;import java.net.MalformedURLException;&lt;br /&gt;import java.net.URL;&lt;br /&gt;&lt;br /&gt;import org.eclipse.swt.SWT;&lt;br /&gt;import org.eclipse.swt.browser.Browser;&lt;br /&gt;import org.eclipse.swt.events.SelectionAdapter;&lt;br /&gt;import org.eclipse.swt.events.SelectionEvent;&lt;br /&gt;import org.eclipse.swt.layout.GridData;&lt;br /&gt;import org.eclipse.swt.layout.GridLayout;&lt;br /&gt;import org.eclipse.swt.widgets.Button;&lt;br /&gt;import org.eclipse.swt.widgets.Display;&lt;br /&gt;import org.eclipse.swt.widgets.Label;&lt;br /&gt;import org.eclipse.swt.widgets.Shell;&lt;br /&gt;import org.eclipse.swt.widgets.Text;&lt;br /&gt;&lt;br /&gt;import sun.net.www.protocol.http.HttpURLConnection;&lt;br /&gt;&lt;br /&gt;public class OpenUrl {&lt;br /&gt;	&lt;br /&gt;	private Display display;&lt;br /&gt;	private Shell shell;&lt;br /&gt;	private GridLayout layout;&lt;br /&gt;//	private Text textArea;&lt;br /&gt;	private Browser browser;&lt;br /&gt;&lt;br /&gt;	public OpenUrl() {&lt;br /&gt;		// Display &amp; Shell holen&lt;br /&gt;		display = new Display();&lt;br /&gt;		shell = new Shell(display);&lt;br /&gt;&lt;br /&gt;		shell.setText("OpenURL - WWW demo application");&lt;br /&gt;		shell.setSize(500, 300);&lt;br /&gt;		&lt;br /&gt;		createGUI();&lt;br /&gt;		&lt;br /&gt;		// Shell &#246;ffnen&lt;br /&gt;		shell.open();&lt;br /&gt;		&lt;br /&gt;		// Event-Schleife starten&lt;br /&gt;		while(!shell.isDisposed()) {&lt;br /&gt;			if(!display.readAndDispatch()) {&lt;br /&gt;				display.sleep();&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void createGUI() {&lt;br /&gt;		layout = new GridLayout();&lt;br /&gt;		layout.numColumns = 2;&lt;br /&gt;		&lt;br /&gt; 		layout.marginLeft = 5;&lt;br /&gt; 		layout.marginTop = 5;&lt;br /&gt; 		layout.marginRight = 5;&lt;br /&gt; 		layout.marginBottom = 5;&lt;br /&gt; 		&lt;br /&gt;		shell.setLayout(layout);&lt;br /&gt;		&lt;br /&gt;		Label l = new Label(shell, SWT.NONE);&lt;br /&gt;		l.setText("URL:");&lt;br /&gt;		l.setLayoutData(new GridData(SWT.LEFT));&lt;br /&gt;		&lt;br /&gt;		final Text t = new Text(shell, SWT.BORDER);&lt;br /&gt;		t.setText("http://www.google.de/");&lt;br /&gt;		t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));&lt;br /&gt;&lt;br /&gt;//	    textArea = new Text(shell, SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL | SWT.READ_ONLY);&lt;br /&gt;//	    textArea.setText("Press \"Open\" to load the URL contents...");&lt;br /&gt;//	    GridData gd = new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL);&lt;br /&gt;//	    gd.horizontalSpan = 2;&lt;br /&gt;//		textArea.setLayoutData(gd);&lt;br /&gt;		&lt;br /&gt;		browser = new Browser(shell, SWT.BORDER);&lt;br /&gt;	    GridData gd = new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL);&lt;br /&gt;	    gd.horizontalSpan = 2;&lt;br /&gt;		browser.setLayoutData(gd);&lt;br /&gt;		&lt;br /&gt;		Button b = new Button(shell, SWT.NONE);&lt;br /&gt;		b.setText("Open");&lt;br /&gt;		b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				open(t.getText());&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		b.setFocus();&lt;br /&gt;		b.setLayoutData(new GridData(SWT.BEGINNING));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private void open(String u) {&lt;br /&gt;		System.err.println(OpenUrl.this + " open URL '" + u + "'");&lt;br /&gt;&lt;br /&gt;		try {&lt;br /&gt;			StringBuffer urlText = new StringBuffer();&lt;br /&gt;			URL url = new URL(u);&lt;br /&gt;			HttpURLConnection con = new HttpURLConnection(url, "webgate.de.emea.csc.com", 8080);&lt;br /&gt;			InputStream in = con.getInputStream();&lt;br /&gt;			int i = -1;&lt;br /&gt;			while(((i = in.read()) != -1)) {&lt;br /&gt;				urlText.append((char)i);&lt;br /&gt;			}&lt;br /&gt;			&lt;br /&gt;//			textArea.setText(urlText.toString());&lt;br /&gt;			browser.setText(urlText.toString());&lt;br /&gt;		} catch (MalformedURLException e) {&lt;br /&gt;			// TODO Auto-generated catch block&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		} catch (IOException e) {&lt;br /&gt;			// TODO Auto-generated catch block&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args) {&lt;br /&gt;		new OpenUrl();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;</description>
      <pubDate>Wed, 30 Aug 2006 13:31:47 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2497</guid>
      <author>cringe ()</author>
    </item>
    <item>
      <title>SimpleGraphicEditor in SWT</title>
      <link>http://snippets.dzone.com/posts/show/2496</link>
      <description>import org.eclipse.swt.SWT;&lt;br /&gt;import org.eclipse.swt.events.PaintEvent;&lt;br /&gt;import org.eclipse.swt.events.PaintListener;&lt;br /&gt;import org.eclipse.swt.graphics.GC;&lt;br /&gt;import org.eclipse.swt.graphics.Image;&lt;br /&gt;import org.eclipse.swt.layout.FillLayout;&lt;br /&gt;import org.eclipse.swt.widgets.Canvas;&lt;br /&gt;import org.eclipse.swt.widgets.Display;&lt;br /&gt;import org.eclipse.swt.widgets.Event;&lt;br /&gt;import org.eclipse.swt.widgets.Listener;&lt;br /&gt;import org.eclipse.swt.widgets.Shell;&lt;br /&gt;&lt;br /&gt;public class SimpleGraphicEditor {&lt;br /&gt;&lt;br /&gt;	private Display display;&lt;br /&gt;	private Shell shell;&lt;br /&gt;	private Canvas canvas;&lt;br /&gt;	private Image imageBuffer;&lt;br /&gt;&lt;br /&gt;	public SimpleGraphicEditor() {&lt;br /&gt;		display = new Display();&lt;br /&gt;		shell = new Shell(display);&lt;br /&gt;		&lt;br /&gt;		createGUI();&lt;br /&gt;		&lt;br /&gt;		shell.open();&lt;br /&gt;		&lt;br /&gt;		while(!shell.isDisposed()) {&lt;br /&gt;			if(!display.readAndDispatch()) {&lt;br /&gt;				display.sleep();&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void createGUI() {&lt;br /&gt;		shell.setLayout(new FillLayout());&lt;br /&gt;		&lt;br /&gt;		canvas = new Canvas(shell, SWT.BORDER);&lt;br /&gt;		canvas.addPaintListener(new PaintListener() {&lt;br /&gt;			public void paintControl(PaintEvent e) {&lt;br /&gt;				e.gc.drawImage(imageBuffer, 0, 0, 500, 500, 0, 0, 500, 500);&lt;br /&gt;			}});&lt;br /&gt;		imageBuffer = new Image(display, 500, 500);&lt;br /&gt;		Listener listener = new Listener() {&lt;br /&gt;			private boolean isDrawing;&lt;br /&gt;			private GC gc = new GC(imageBuffer);&lt;br /&gt;			private int oldX = 0;&lt;br /&gt;			private int oldY = 0;&lt;br /&gt;			private int newX = 0;&lt;br /&gt;			private int newY = 0;&lt;br /&gt;			private boolean isDeleting;&lt;br /&gt;&lt;br /&gt;			public void handleEvent(Event event) {&lt;br /&gt;//				System.err.println("type=" + event.type);&lt;br /&gt;				switch(event.type) {&lt;br /&gt;				case SWT.MouseDown:&lt;br /&gt;//					System.err.println("button down");&lt;br /&gt;					switch(event.button) {&lt;br /&gt;					case 1:&lt;br /&gt;						isDrawing = true;&lt;br /&gt;						break;&lt;br /&gt;					case 2:&lt;br /&gt;						System.err.println("button2 down");&lt;br /&gt;						break;&lt;br /&gt;					case 3:&lt;br /&gt;						isDeleting = true;&lt;br /&gt;						break;&lt;br /&gt;					}&lt;br /&gt;					break;&lt;br /&gt;				case SWT.MouseUp:&lt;br /&gt;//					System.err.println("button up");&lt;br /&gt;					switch(event.button) {&lt;br /&gt;					case 1:&lt;br /&gt;						isDrawing = false;&lt;br /&gt;						break;&lt;br /&gt;					case 2:&lt;br /&gt;						System.err.println("button2 up");&lt;br /&gt;						break;&lt;br /&gt;					case 3:&lt;br /&gt;						isDeleting = false;&lt;br /&gt;						break;&lt;br /&gt;					}&lt;br /&gt;					break;&lt;br /&gt;				case SWT.MouseMove:&lt;br /&gt;					newX = event.x;&lt;br /&gt;					newY = event.y;&lt;br /&gt;//					System.err.println("mouse moved");&lt;br /&gt;					if(isDrawing) {&lt;br /&gt;						gc.drawLine(oldX, oldY, newX, newY);&lt;br /&gt;						int x = (oldX &lt; newX) ? oldX : newX;&lt;br /&gt;						int y = (oldY &lt; newY) ? oldY : newY;&lt;br /&gt;						int width  = (oldX &lt; newX) ? (newX-oldX) : (oldX - newX);&lt;br /&gt;						int height = (oldY &lt; newY) ? (newY-oldY) : (oldY - newY);&lt;br /&gt;						if(width &lt; 20) width = 20;&lt;br /&gt;						if(height &lt; 20) height = 20;&lt;br /&gt;						canvas.redraw(x, y, width, height, true);&lt;br /&gt;					} else if(isDeleting) {&lt;br /&gt;//						Color c = gc.getBackground();&lt;br /&gt;//						gc.setBackground(gc.getForeground());&lt;br /&gt;						gc.fillRectangle(newX - 15, newY - 15, 30, 30);&lt;br /&gt;						canvas.redraw(newX - 15, newY - 15, 30, 30, true);&lt;br /&gt;//						gc.setBackground(c);&lt;br /&gt;					}&lt;br /&gt;					&lt;br /&gt;					break;&lt;br /&gt;				}&lt;br /&gt;				&lt;br /&gt;				oldX = event.x;&lt;br /&gt;				oldY = event.y;&lt;br /&gt;			}&lt;br /&gt;		};&lt;br /&gt;		canvas.addListener(SWT.MouseDown, listener);&lt;br /&gt;		canvas.addListener(SWT.MouseUp, listener);&lt;br /&gt;		canvas.addListener(SWT.MouseMove, listener);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args) {&lt;br /&gt;		new SimpleGraphicEditor();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;</description>
      <pubDate>Wed, 30 Aug 2006 13:31:31 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2496</guid>
      <author>cringe ()</author>
    </item>
    <item>
      <title>SimpleEditor in SWT</title>
      <link>http://snippets.dzone.com/posts/show/2495</link>
      <description>import java.io.BufferedReader;&lt;br /&gt;import java.io.BufferedWriter;&lt;br /&gt;import java.io.File;&lt;br /&gt;import java.io.FileNotFoundException;&lt;br /&gt;import java.io.FileReader;&lt;br /&gt;import java.io.FileWriter;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;&lt;br /&gt;import org.eclipse.swt.SWT;&lt;br /&gt;import org.eclipse.swt.custom.CBanner;&lt;br /&gt;import org.eclipse.swt.custom.StyledText;&lt;br /&gt;import org.eclipse.swt.events.KeyAdapter;&lt;br /&gt;import org.eclipse.swt.events.KeyEvent;&lt;br /&gt;import org.eclipse.swt.events.SelectionAdapter;&lt;br /&gt;import org.eclipse.swt.events.SelectionEvent;&lt;br /&gt;import org.eclipse.swt.graphics.Image;&lt;br /&gt;import org.eclipse.swt.graphics.Rectangle;&lt;br /&gt;import org.eclipse.swt.layout.GridData;&lt;br /&gt;import org.eclipse.swt.layout.GridLayout;&lt;br /&gt;import org.eclipse.swt.widgets.Display;&lt;br /&gt;import org.eclipse.swt.widgets.FileDialog;&lt;br /&gt;import org.eclipse.swt.widgets.Link;&lt;br /&gt;import org.eclipse.swt.widgets.Menu;&lt;br /&gt;import org.eclipse.swt.widgets.MenuItem;&lt;br /&gt;import org.eclipse.swt.widgets.MessageBox;&lt;br /&gt;import org.eclipse.swt.widgets.Shell;&lt;br /&gt;import org.eclipse.swt.widgets.ToolBar;&lt;br /&gt;import org.eclipse.swt.widgets.ToolItem;&lt;br /&gt;&lt;br /&gt;public class SimpleEditor {&lt;br /&gt;	private Display display;&lt;br /&gt;	private Shell shell;&lt;br /&gt;	private HashMap&lt;String, Image&gt; hashImages;&lt;br /&gt;	private StyledText textArea;&lt;br /&gt;	private String currentFileName;&lt;br /&gt;	private boolean modified = false;&lt;br /&gt;&lt;br /&gt;	public SimpleEditor() {&lt;br /&gt;		display = new Display();&lt;br /&gt;		shell = new Shell(display);&lt;br /&gt;		&lt;br /&gt;		init();&lt;br /&gt;		createMenu();&lt;br /&gt;		createToolBar();&lt;br /&gt;		createGUI();&lt;br /&gt;		&lt;br /&gt;		shell.open();&lt;br /&gt;		&lt;br /&gt;		while(!shell.isDisposed()) {&lt;br /&gt;			if(!display.readAndDispatch()) {&lt;br /&gt;				display.sleep();&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void createGUI() {&lt;br /&gt;		shell.setLayout(new GridLayout(1, false));&lt;br /&gt;		shell.setImage(getImageFor("open"));&lt;br /&gt;		&lt;br /&gt;		textArea = new StyledText(shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);&lt;br /&gt;		textArea.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));&lt;br /&gt;		textArea.addKeyListener(new KeyAdapter() {&lt;br /&gt;			public void keyPressed(KeyEvent e) {&lt;br /&gt;				setModified(true);&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;&lt;br /&gt;		Link link = new Link(shell, SWT.NONE);&lt;br /&gt;//		link.setText("Ein Link!");&lt;br /&gt;		link.setText("&lt;a href=\"http://www.eclipse.org/\"&gt;Ein Link!&lt;/a&gt;");&lt;br /&gt;		link.setToolTipText("Dies ist der Tooltip zum Link!");&lt;br /&gt;		link.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				System.err.println("link");&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private void createToolBar() {&lt;br /&gt;		CBanner banner = new CBanner(shell, SWT.NONE);&lt;br /&gt;		banner.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));&lt;br /&gt;		banner.setRightWidth(200);&lt;br /&gt;		&lt;br /&gt;		ToolBar tb1 = new ToolBar(banner, SWT.NONE);&lt;br /&gt;		tb1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));&lt;br /&gt;		banner.setLeft(tb1);&lt;br /&gt;		&lt;br /&gt;		ToolItem item = new ToolItem(tb1, SWT.NONE);&lt;br /&gt;//		item.setText("Open");&lt;br /&gt;		item.setToolTipText("Open...");&lt;br /&gt;		item.setImage(getImageFor("open"));&lt;br /&gt;		item.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				open();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		item = new ToolItem(tb1, SWT.NONE);&lt;br /&gt;//		item.setText("Save");&lt;br /&gt;		item.setToolTipText("Save");&lt;br /&gt;		item.setImage(getImageFor("save"));&lt;br /&gt;		item.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				save();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		item = new ToolItem(tb1, SWT.NONE);&lt;br /&gt;//		item.setText("Save");&lt;br /&gt;		item.setToolTipText("Save as...");&lt;br /&gt;		item.setImage(getImageFor("saveas"));&lt;br /&gt;		item.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				saveAs();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;&lt;br /&gt;		item = new ToolItem(tb1, SWT.NONE);&lt;br /&gt;//		item.setText("Close");&lt;br /&gt;		item.setToolTipText("Close");&lt;br /&gt;		item.setImage(getImageFor("close"));&lt;br /&gt;		item.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				close();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;&lt;br /&gt;//		item = new ToolItem(tb1, SWT.SEPARATOR);&lt;br /&gt;		&lt;br /&gt;		tb1 = new ToolBar(banner, SWT.NONE);&lt;br /&gt;		tb1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));&lt;br /&gt;		banner.setRight(tb1);&lt;br /&gt;		&lt;br /&gt;		item = new ToolItem(tb1, SWT.NONE);&lt;br /&gt;//		item.setText("Cut");&lt;br /&gt;		item.setToolTipText("Cut");&lt;br /&gt;		item.setImage(getImageFor("cut"));&lt;br /&gt;		item.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				cut();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		item = new ToolItem(tb1, SWT.NONE);&lt;br /&gt;//		item.setText("Copy");&lt;br /&gt;		item.setToolTipText("Copy");&lt;br /&gt;		item.setImage(getImageFor("copy"));&lt;br /&gt;		item.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				copy();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		item = new ToolItem(tb1, SWT.NONE);&lt;br /&gt;//		item.setText("Paste");&lt;br /&gt;		item.setToolTipText("Paste");&lt;br /&gt;		item.setImage(getImageFor("paste"));&lt;br /&gt;		item.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				paste();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		item = new ToolItem(tb1, SWT.SEPARATOR);&lt;br /&gt;&lt;br /&gt;		item = new ToolItem(tb1, SWT.NONE);&lt;br /&gt;//		item.setText("Undo");&lt;br /&gt;		item.setToolTipText("Undo");&lt;br /&gt;		item.setImage(getImageFor("undo"));&lt;br /&gt;		item.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				undo();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		item = new ToolItem(tb1, SWT.NONE);&lt;br /&gt;//		item.setText("Redo");&lt;br /&gt;		item.setToolTipText("Redo");&lt;br /&gt;		item.setImage(getImageFor("redo"));&lt;br /&gt;		item.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				redo();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		item = new ToolItem(tb1, SWT.SEPARATOR);&lt;br /&gt;&lt;br /&gt;		item = new ToolItem(tb1, SWT.NONE);&lt;br /&gt;//		item.setText("Help");&lt;br /&gt;		item.setToolTipText("Help");&lt;br /&gt;		item.setImage(getImageFor("help"));&lt;br /&gt;		item.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				help();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		item = new ToolItem(tb1, SWT.SEPARATOR);&lt;br /&gt;&lt;br /&gt;		item = new ToolItem(tb1, SWT.NONE);&lt;br /&gt;//		item.setText("Exit");&lt;br /&gt;		item.setToolTipText("Exit");&lt;br /&gt;		item.setImage(getImageFor("exit"));&lt;br /&gt;		item.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				exit();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private void createMenu() {&lt;br /&gt;		Menu menubar = new Menu(shell, SWT.BAR);&lt;br /&gt;		shell.setMenuBar(menubar);&lt;br /&gt;		&lt;br /&gt;		MenuItem menuFileHeader = new MenuItem(menubar, SWT.CASCADE);&lt;br /&gt;		menuFileHeader.setText("&amp;File");&lt;br /&gt;		&lt;br /&gt;		Menu menuFile = new Menu(shell, SWT.DROP_DOWN);&lt;br /&gt;		menuFileHeader.setMenu(menuFile);&lt;br /&gt;		&lt;br /&gt;		MenuItem itemOpen = new MenuItem(menuFile, SWT.PUSH);&lt;br /&gt;		itemOpen.setText("&amp;Open...");&lt;br /&gt;		itemOpen.setImage(getImageFor("open"));&lt;br /&gt;		itemOpen.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				open();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		MenuItem itemClose = new MenuItem(menuFile, SWT.PUSH);&lt;br /&gt;		itemClose.setText("&amp;Close...");&lt;br /&gt;		itemClose.setImage(getImageFor("close"));&lt;br /&gt;		itemClose.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				close();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		MenuItem itemSave = new MenuItem(menuFile, SWT.PUSH);&lt;br /&gt;		itemSave.setText("&amp;Save...");&lt;br /&gt;		itemSave.setImage(getImageFor("save"));&lt;br /&gt;		itemSave.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				save();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		MenuItem itemSaveAs = new MenuItem(menuFile, SWT.PUSH);&lt;br /&gt;		itemSaveAs.setText("&amp;Save as...");&lt;br /&gt;		itemSaveAs.setImage(getImageFor("saveas"));&lt;br /&gt;		itemSaveAs.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				saveAs();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		MenuItem sep = new MenuItem(menuFile, SWT.SEPARATOR);&lt;br /&gt;		&lt;br /&gt;		MenuItem itemExit = new MenuItem(menuFile, SWT.PUSH);&lt;br /&gt;		itemExit.setText("E&amp;xit");&lt;br /&gt;		itemExit.setImage(getImageFor("exit"));&lt;br /&gt;		itemExit.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				shell.close();&lt;br /&gt;				display.dispose();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		MenuItem menuEditHeader = new MenuItem(menubar, SWT.CASCADE);&lt;br /&gt;		menuEditHeader.setText("&amp;Edit");&lt;br /&gt;		&lt;br /&gt;		Menu menuEdit = new Menu(shell, SWT.DROP_DOWN);&lt;br /&gt;		menuEditHeader.setMenu(menuEdit);&lt;br /&gt;		&lt;br /&gt;		MenuItem itemUndo = new MenuItem(menuEdit, SWT.PUSH);&lt;br /&gt;		itemUndo.setText("&amp;Undo");&lt;br /&gt;		itemUndo.setImage(getImageFor("undo"));&lt;br /&gt;		itemUndo.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				undo();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		MenuItem itemRedo = new MenuItem(menuEdit, SWT.PUSH);&lt;br /&gt;		itemRedo.setText("&amp;Redo");&lt;br /&gt;		itemRedo.setImage(getImageFor("redo"));&lt;br /&gt;		itemRedo.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				redo();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;		sep = new MenuItem(menuEdit, SWT.SEPARATOR);&lt;br /&gt;		&lt;br /&gt;		MenuItem itemCut = new MenuItem(menuEdit, SWT.PUSH);&lt;br /&gt;		itemCut.setText("&amp;Cut");&lt;br /&gt;		itemCut.setImage(getImageFor("cut"));&lt;br /&gt;		itemCut.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				cut();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		MenuItem itemCopy = new MenuItem(menuEdit, SWT.PUSH);&lt;br /&gt;		itemCopy.setText("Co&amp;py");&lt;br /&gt;		itemCopy.setImage(getImageFor("copy"));&lt;br /&gt;		itemCopy.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				copy();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		MenuItem itemPaste = new MenuItem(menuEdit, SWT.PUSH);&lt;br /&gt;		itemPaste.setText("&amp;Paste");&lt;br /&gt;		itemPaste.setImage(getImageFor("paste"));&lt;br /&gt;		itemPaste.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				paste();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		&lt;br /&gt;&lt;br /&gt;		MenuItem menuHelpHeader = new MenuItem(menubar, SWT.CASCADE);&lt;br /&gt;		menuHelpHeader.setText("&amp;?");&lt;br /&gt;		&lt;br /&gt;		Menu menuHelp = new Menu(shell, SWT.DROP_DOWN);&lt;br /&gt;		menuHelpHeader.setMenu(menuHelp);&lt;br /&gt;		&lt;br /&gt;		MenuItem itemHelp = new MenuItem(menuHelp, SWT.PUSH);&lt;br /&gt;		itemHelp.setText("&amp;Help index");&lt;br /&gt;		itemHelp.setImage(getImageFor("help"));&lt;br /&gt;		itemHelp.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				help();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;&lt;br /&gt;		sep = new MenuItem(menuHelp, SWT.SEPARATOR);&lt;br /&gt;		&lt;br /&gt;		MenuItem itemAbout = new MenuItem(menuHelp, SWT.PUSH);&lt;br /&gt;		itemAbout.setText("&amp;About");&lt;br /&gt;		itemAbout.setImage(getImageFor("about"));&lt;br /&gt;		itemAbout.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;			public void widgetSelected(SelectionEvent e) {&lt;br /&gt;				about();&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private void open() {&lt;br /&gt;//		System.err.println("open");&lt;br /&gt;		FileDialog dlg = new FileDialog(shell, SWT.OPEN);&lt;br /&gt;		dlg.open();&lt;br /&gt;		currentFileName = dlg.getFilterPath() + File.separator + dlg.getFileName();&lt;br /&gt;		File f = new File(currentFileName);&lt;br /&gt;		if(f.isFile()) {&lt;br /&gt;//			System.err.println("selected " + f);&lt;br /&gt;			BufferedReader br;&lt;br /&gt;			try {&lt;br /&gt;				br = new BufferedReader(new FileReader(f));&lt;br /&gt;				StringBuffer buf = new StringBuffer();&lt;br /&gt;				String line = null;&lt;br /&gt;				while((line = br.readLine()) != null) {&lt;br /&gt;					buf.append(line + '\n');&lt;br /&gt;				}&lt;br /&gt;				br.close();&lt;br /&gt;				textArea.setText(buf.toString());&lt;br /&gt;			} catch (FileNotFoundException e1) {&lt;br /&gt;				// TODO Auto-generated catch block&lt;br /&gt;				e1.printStackTrace();&lt;br /&gt;			} catch (IOException e1) {&lt;br /&gt;				// TODO Auto-generated catch block&lt;br /&gt;				e1.printStackTrace();&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void save() {&lt;br /&gt;		if("".equals(textArea.getText())) return;&lt;br /&gt;		&lt;br /&gt;		if(currentFileName == null) {&lt;br /&gt;			FileDialog dlg = new FileDialog(shell, SWT.SAVE);&lt;br /&gt;			String fn = dlg.open();&lt;br /&gt;			if(fn == null) {&lt;br /&gt;				// cancelled&lt;br /&gt;				return;&lt;br /&gt;			} else {&lt;br /&gt;				currentFileName = fn;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		File f = new File(currentFileName);&lt;br /&gt;		try {&lt;br /&gt;			//TODO make this more robust, write out only portions&lt;br /&gt;			BufferedWriter bw = new BufferedWriter(new FileWriter(f));&lt;br /&gt;			bw.write(textArea.getText());&lt;br /&gt;			bw.close();&lt;br /&gt;		} catch (IOException e) {&lt;br /&gt;			// TODO Auto-generated catch block&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		setModified(false);&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void saveAs() {&lt;br /&gt;		currentFileName = null;&lt;br /&gt;		save();&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void close() {&lt;br /&gt;		if(!"".equals(textArea.getText()) &amp;&amp; isModified()) {&lt;br /&gt;			MessageBox alert = new MessageBox(shell, SWT.YES | SWT.NO);&lt;br /&gt;			alert.setMessage("File is modified. Do you want to save?");&lt;br /&gt;			int result = alert.open();&lt;br /&gt;			if(result == SWT.YES) {&lt;br /&gt;				save();&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		currentFileName = null;&lt;br /&gt;		textArea.setText("");&lt;br /&gt;		setModified(false);&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void exit() {&lt;br /&gt;		close();&lt;br /&gt;		&lt;br /&gt;		shell.dispose();&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void cut() {&lt;br /&gt;		textArea.cut();&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void copy() {&lt;br /&gt;		textArea.copy();&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void paste() {&lt;br /&gt;		textArea.paste();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private void redo() {&lt;br /&gt;		System.err.println("redo");&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private void undo() {&lt;br /&gt;		System.err.println("undo");&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void about() {&lt;br /&gt;		System.err.println("about");&lt;br /&gt;		AboutDialog dlg = new AboutDialog(shell);&lt;br /&gt;		dlg.setMessage("Dies ist ein About Dialog.\nEr hat 2 Zeilen.");&lt;br /&gt;		int result = dlg.open();&lt;br /&gt;		System.err.println("result=" + result);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private void help() {&lt;br /&gt;		System.err.println("help");&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private void setModified(boolean modified) {&lt;br /&gt;		this.modified = modified;&lt;br /&gt;		&lt;br /&gt;		if(modified &amp;&amp; !shell.getText().endsWith("*")) {&lt;br /&gt;			shell.setText(shell.getText() + "*");&lt;br /&gt;		} else if(!modified &amp;&amp; shell.getText().endsWith("*")) {&lt;br /&gt;			shell.setText(shell.getText().substring(0, shell.getText().length() - 1));&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private boolean isModified() {&lt;br /&gt;		return modified;&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	private Image getImageFor(String cmd) {&lt;br /&gt;		return (Image) hashImages.get(cmd.toLowerCase());&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private void init() {&lt;br /&gt;		shell.setText("SimpleEditor");&lt;br /&gt;		shell.setSize(500, 300);&lt;br /&gt;		&lt;br /&gt;		hashImages = new HashMap&lt;String, Image&gt;();&lt;br /&gt;		//TODO remove absolute path&lt;br /&gt;		hashImages.put("open", 	new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\fileopen.png"));&lt;br /&gt;		hashImages.put("close", new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\fileclose.png"));&lt;br /&gt;		hashImages.put("save", 	new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\filesave.png"));&lt;br /&gt;		hashImages.put("saveas", 	new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\filesaveas.png"));&lt;br /&gt;		hashImages.put("exit", 	new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\exit.png"));&lt;br /&gt;&lt;br /&gt;		hashImages.put("cut", 	new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\editcut.png"));&lt;br /&gt;		hashImages.put("copy", 	new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\editcopy.png"));&lt;br /&gt;		hashImages.put("paste", new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\editpaste.png"));&lt;br /&gt;&lt;br /&gt;		hashImages.put("undo", new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\undo.png"));&lt;br /&gt;		hashImages.put("redo", new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\redo.png"));&lt;br /&gt;&lt;br /&gt;		hashImages.put("help", new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\help.png"));&lt;br /&gt;		hashImages.put("about", new Image(display, "C:\\Programme\\eclipse\\workspace\\TestSwt\\src\\icons\\about_kde.png"));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args) {&lt;br /&gt;		new SimpleEditor();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class AboutDialog {&lt;br /&gt;	&lt;br /&gt;	private MessageBox box;&lt;br /&gt;&lt;br /&gt;	public AboutDialog(Shell shell) {&lt;br /&gt;		box = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.OK);&lt;br /&gt;		box.setText("About...");&lt;br /&gt;		Rectangle bounds = shell.getBounds();&lt;br /&gt;		int x = bounds.x + (bounds.width / 2);&lt;br /&gt;		int y = bounds.y + (bounds.height / 2);&lt;br /&gt;		System.err.println("x~=" + x + ",y~=" + y);&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	public void setMessage(String message) {&lt;br /&gt;		box.setMessage(message);&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	public int open() {&lt;br /&gt;		return box.open();&lt;br /&gt;	}&lt;br /&gt;}</description>
      <pubDate>Wed, 30 Aug 2006 13:31:09 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2495</guid>
      <author>cringe ()</author>
    </item>
  </channel>
</rss>
