Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Newcomers » Newcomers » Implement SWT Code to RCP(Written SWT Code into RCP View)
icon3.gif  Implement SWT Code to RCP [message #778381] Thu, 12 January 2012 16:51
Simon Woelki is currently offline Simon WoelkiFriend
Messages: 2
Registered: January 2012
Junior Member
Hi guys,

I need an advice:

I made some Code in SWT :

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.ScrollBar;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;

import java.io.File;

public class GUI 
{
	
	public GUI()
	{
		final Display display = new Display();
		display.getBounds();
		final Shell shell = new Shell(display);
		shell.setText("Klicken zum Verschieben");
		Monitor primary = display.getPrimaryMonitor();
		Rectangle bounds = primary.getBounds();
		Rectangle rectangle = shell.getBounds();
		int x = bounds.x + (bounds.width - rectangle.width) / 2;
		int y = bounds.y + (bounds.height - rectangle.height) / 2;
		shell.setLayout(new FillLayout(SWT.HORIZONTAL));
		shell.setFullScreen(true);
		//shell.setSize(1024, 768);
		Color myColor = new Color(display, 255,255,255);
	
	//-------------------------------------------->Menu<-------------------------------------------------------------------
		Menu menu = new Menu(shell, SWT.BAR);
		
		final MenuItem Datei = new MenuItem(menu, SWT.CASCADE);
		Datei.setText("Datei");
		Datei.setAccelerator('D');
		final Menu DateiMenu = new Menu(shell, SWT.DROP_DOWN);
		Datei.setMenu(DateiMenu);
		final MenuItem Oeffnen = new MenuItem(DateiMenu, SWT.PUSH);
		Oeffnen.setText("&Öffnen\tSTRG+O");
		Oeffnen.setAccelerator(SWT.CTRL + 'O');
		final MenuItem seperator = new MenuItem (DateiMenu, SWT.SEPARATOR);
		final MenuItem exit = new MenuItem (DateiMenu, SWT.PUSH);
		exit.setText("Exit");
		
		//Exit
		exit.addSelectionListener
		(
				new SelectionAdapter()
				{
					public void widgetSelected(SelectionEvent e)
					{
						MessageBox exitbox = new MessageBox(shell, SWT.ICON_QUESTION | SWT.YES | SWT.NO);
						exitbox.setMessage("Wollen Sie wirklich schließen?");
						exitbox.setText("Schließen");
						int response = exitbox.open();
						if (response == SWT.YES)
						{
							System.exit(0);
						}
					}
				}
		);		
		//----------------------------------------->Unterteilung in rechte und linke Seite<--------------------------------
		final SashForm sashForm = new SashForm(shell, SWT.HORIZONTAL);
		sashForm.setVisible(true);
		
//------------------------------------------>linke Seite<------------------------------------------------------------------
		final Composite linkeSpalte = new Composite(sashForm, SWT.V_SCROLL);
		linkeSpalte.setBackground(new Color(display, 233, 233, 233));
		
		GridLayout grid = new GridLayout();
		grid.numColumns = 1;
		linkeSpalte.setLayout(grid);
		//------------------------------------------>Image Laden und prüfen<-----------------------------------------------
		   
	    	Image orginalImage = null;
	  		final FileDialog FD = new FileDialog(shell, SWT.MULTI);
	  		//FD.setFilterPath("C:\\Users\\Admin\\workspace\\");
	  		String[] filterExt = {"*.jpg", "*.png", "*.jpeg", "*.bmp", "*.*"};
	  		FD.setFilterExtensions(filterExt);
	  		
	  	    String hans = FD.open(); 
	  		
	  		if (hans != null)
	  			{
	  			StringBuffer sb = new StringBuffer();
	  			String[] bilder = FD.getFileNames();
	  			for (int i = 0; i < bilder.length; i++)
	  				{
	  				sb.append(FD.getFilterPath());
	  				if(sb.charAt(sb.length() - 1) != File.separatorChar)
	  					{
	  					sb.append(File.separatorChar);
	  					}
	  				sb.append(bilder[i]);
	  				String string = new String(sb);
	  				orginalImage = new Image(display, string);
	  				Label label = new Label(linkeSpalte, SWT.RESIZE);
	  				label.setImage(orginalImage);
	  				}
	  			}
	  		if (hans == null)
	  			{
	  				Label label = new Label(linkeSpalte, SWT.RESIZE);
	  				label.setText("Falsches Format oder keine Datei(en) ausgewählt.");
	  			}
	    
		
		linkeSpalte.addListener(SWT.Resize, new Listener()
								{
								public void handleEvent(Event e)
									{
									
									}
								}
							   );
		//------------------------------------------>rechte Spalte unterteilen<--------------------------------------------
		SashForm rechteSpalte = new SashForm(sashForm, SWT.VERTICAL);
		rechteSpalte.setVisible(true);
//------------------------------------------>rechts oben<------------------------------------------------------------------
		final Composite rechtsOben = new Composite(rechteSpalte, SWT.NONE);
		//Layout
		RowLayout rowLayout = new RowLayout();
		rowLayout.fill = true;
		rowLayout.justify= true;
		rowLayout.type = SWT.VERTICAL;
		
		rechtsOben.setLayout(rowLayout);
		rechtsOben.setBackground(myColor);
		
		//Widgets
		Button eins = new Button(rechtsOben, SWT.PUSH);
		eins.setText("eins");
		

		Button zwei = new Button(rechtsOben, SWT.PUSH);
		zwei.setText("zwei");
		

		Button drei = new Button(rechtsOben, SWT.PUSH);
		drei.setText("drei");
		

		Button vier = new Button(rechtsOben, SWT.PUSH);
		vier.setText("vier");
		

		Button fünf = new Button(rechtsOben, SWT.PUSH);
		fünf.setText("fünf");
		
		
		Button sechs = new Button(rechtsOben, SWT.PUSH);
		sechs.setText("sechs");
		
		
		Button sieben = new Button(rechtsOben, SWT.PUSH);
		sieben.setText("sieben");
		
		
		Button acht = new Button(rechtsOben, SWT.PUSH);
		acht.setText("acht");
		
		
		Button neun = new Button(rechtsOben, SWT.PUSH);
		neun.setText("neun");
		
		Button zehn = new Button(rechtsOben, SWT.PUSH);
		zehn.setText("zehn");
		
//------------------------------------------>rechts unten<----------------------------------------------------------------------
		Composite rechtsUnten = new Composite(rechteSpalte, SWT.NONE);
		rechtsUnten.setLayout(new FormLayout());
		rechtsUnten.setBackground(myColor);
		
		FormData rULayout = new FormData();
		rULayout.top = new FormAttachment (40, 10);
		rULayout.left = new FormAttachment(30, 10);
		
		final Combo combo = new Combo(rechtsUnten, SWT.LEFT);
		combo.setItems(new String[] {"DatenbankEintrag 1", "DatenbankEintrag 2", "DatenbankEintrag 3"});
		combo.setLayoutData(rULayout);
		
//------------------------------------------>Fenster erzeugen<-------------------------------------------------------------------
		shell.setMenuBar(menu);
		shell.setLocation(x, y);
		shell.open();
		while (!shell.isDisposed()) 
		{
			if (!display.readAndDispatch()) 
			{
				display.sleep();
			}
		}
		display.dispose();
		
	}
	public static void main(String[] args) 
	{
		new GUI();
	}
}



When i copy paste the code to
public void createPartControl(Composite parent) {
		//copy it in here!
	
	}


i get this error:
org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(SWT.java:4083)
at org.eclipse.swt.SWT.error(SWT.java:3998)
etc,,,


Ok i expected an error. But where to put my SWT Code? Other snippets works fine:(

Please help me.

Best regards
Simon


Previous Topic:Cant create Python 3.2 interpreter on OSX
Next Topic:Embedded ant versus external ant
Goto Forum:
  


Current Time: Thu Mar 28 11:34:37 GMT 2024

Powered by FUDForum. Page generated in 0.05159 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top