Fakultet tehničkih nauka u Novom Sadu
Katedra za informatiku
plugins/org.eclipse.swt.gtk.linux.x86_xxxxx.jar
plugins/org.eclipse.swt_xxxxx.jar
public class HelloSWT {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
Text text = new Text(shell, SWT.CENTER);
text.setText("Hello SWT!");
text.pack();
shell.pack();
shell.open();
while(!shell.isDisposed()){
if(!display.readAndDispatch()){
display.sleep();
}
}
}
}
Najvažnije metode:
Display
objekat za koji je tekući thread EDT (Event Dispatching
Thread).Display
klase.Display
objektom.Shell
) primaju kao jedan od parametara stil.Shell
je
SWT.SHELL_TRIM
koji podrazumeva TITLE, MIN,
MAX, RESIZE, CLOSE
stilove.OR
operatorom (|).org.eclipse.swt_xxx
org.eclipse.swt.[tehnologija]
org.eclipse.jface_xxx
org.eclipse.jface.text_xxx
org.eclipse.jface.databinding_xxx
org.eclipse.equinox.common_xxx
org.eclipse.core.commands_xxx
public class HelloJFace extends ApplicationWindow{
public HelloJFace() {
super(null);
}
@Override
protected Control createContents(Composite parent) {
Text text = new Text(parent, SWT.CENTER);
text.setText("Hello SWT and JFace!");
text.pack();
return parent;
}
public static void main(String[] args) {
HelloJFace awin = new HelloJFace();
awin.setBlockOnOpen(true);
awin.open();
Display.getCurrent().dispose();
}
}
ApplicationWindow
predstavlja glavni prozor aplikacije.Shell
i Display
objekte.createContents
.open()
prozora podrazumevano nije blokirajuća jer je
moguće kreirati više prozora najvišeg nivoa. Ukoliko želimo da
open()
poziv metode bude blokirajući, dok korisnik ne zatraži
zatvaranje prozora, pozivamo setBlockOnOpen(true)
.Display.getCurrent().dispose()
.Composite
u nastavku).dispose
).int
koji opisuje stil widget-a.Display
objekat pridružen widget-u.Composite
objekat ima listu svojih podkomponenti.Composite
je kontrola pa može da se nađe svuda gde se
mogu naći druge vrste kontrola.Scrollable
tako da svaki kompozit može
imati scrollbar-s.Display
objekat u
metodi readAndDisplatch.Display
ga šalje
Shell
objektu najvišeg nivoa koji je "spojen" za
dati Display
objekat.Shell
određuje kojem Widget
-u treba
da prosledi događaj.Widget
obaveštava sve osluškivače da se događaj
desio.org.eclipse.swt.widgets.Listener
interfejs koja
definiše metodu handleEvent(Event)
.Widget
-e putem metode
addListener(int eventType, Listener)
Event
klasu.*Listener
interfejsa
koji nasleđuju
org.eclipse.swt.internal.SWTEventListener
.Widget
-e putem metoda oblika
add*Listener()
.*Event
klase – svaki
listener ima svoju Event
klasu.Event
ili naslednicama
TypedEvent
.Listener
interfejsa – AdapteriTreeListener
→ TreeAdapter
ContributionManager
klasu (implementiraju
IContributionManager
).ActionContributionItem
– wrapper za
Action
objekat koji se dodaje na
IContributionManager
.ContributionManager
predstavlja kontejner za
ContributionItem
objekte.ContributionManager
-a.ActionContributionItem
-a.Composite
objektu može se prikazati
kao dugme dok će na meniju biti stavka menija.Composite
objekta.Composite
objekta
postavlja Layout
.Control
klase koje se dodaju u
Composite
mogu primiti konfiguraciju sa
setLayoutData(Object) pozivom.Layout
objekat
prilikom izračunavanja veličina i pozicija.Viewer
-i koriste Provider
-e za
dobavljanje informacija koje treba da prikažu.Provider
-i implementiraju interfejse
IContentProvider i IBaseLabelProvider.IContentProvider
-i se bave strukturom koja se
prikazuje.IBaseLabelProvider
se bave vizuelnim
karakteristikama - labele i ikone.Provider
-i:
ISelectionProvider, IColorProvider,
IFontProvider itd.Primeri sa Viewerima sa JFaceSnippets-a: SimpleTreeViewer, VirtualTree, TableViewerShowHide, TableViewerAlternatingColors, TreeCustomMenu, StyledCellLabel, SimpleCellEditor, DoubleClickCellEditor, CellEditorContentProposal...