--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>\r
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
+ <classpathentry kind="src" path="src"/>\r
+ <classpathentry kind="output" path="bin"/>\r
+</classpath>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+ <name>com.example.e4.rcp</name>\r
+ <comment></comment>\r
+ <projects>\r
+ </projects>\r
+ <buildSpec>\r
+ <buildCommand>\r
+ <name>org.eclipse.jdt.core.javabuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.pde.ManifestBuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.pde.SchemaBuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ </buildSpec>\r
+ <natures>\r
+ <nature>org.eclipse.pde.PluginNature</nature>\r
+ <nature>org.eclipse.jdt.core.javanature</nature>\r
+ </natures>\r
+</projectDescription>\r
--- /dev/null
+eclipse.preferences.version=1\r
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11\r
+org.eclipse.jdt.core.compiler.compliance=11\r
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled\r
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning\r
+org.eclipse.jdt.core.compiler.release=enabled\r
+org.eclipse.jdt.core.compiler.source=11\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_6wlLcMgZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.application" bindingContexts="_6wlLecgZEeSyMNYR5xypkQ">\r
+ <children xsi:type="basic:TrimmedWindow" xmi:id="_6wlLccgZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.window.main" label="Eclipse 4 RCP Application" width="500" height="400">\r
+ <children xsi:type="basic:PartSashContainer" xmi:id="_6wlLksgZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.partsashcontainer.sample">\r
+ <children xsi:type="basic:PartStack" xmi:id="_6wlLk8gZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.partstack.sample">\r
+ <children xsi:type="basic:Part" xmi:id="_6wlLlMgZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.part.sample" contributionURI="bundleclass://com.example.e4.rcp/com.example.e4.rcp.parts.SamplePart" label="Sample Part" iconURI="platform:/plugin/com.example.e4.rcp/icons/home.png"/>\r
+ </children>\r
+ <children xsi:type="basic:PartStack" xmi:id="_IcuwAGpsEemMm_uKcWEHow" elementId="com.example.e4.rcp.partstack.0">\r
+ <children xsi:type="basic:Part" xmi:id="_HdzpoGpsEemMm_uKcWEHow" elementId="com.example.e4.rcp.part.notherpart" contributionURI="bundleclass://com.example.e4.rcp/com.example.e4.rcp.parts.NPart" label="Nother Part" iconURI="platform:/plugin/com.example.e4.rcp/icons/debug_view.png" closeable="true"/>\r
+ </children>\r
+ </children>\r
+ <mainMenu xmi:id="_6wlLicgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.main.menu">\r
+ <children xsi:type="menu:Menu" xmi:id="_6wlLisgZEeSyMNYR5xypkQ" elementId="file" label="File">\r
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_6wlLi8gZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.handleditem.file.open" label="Open" iconURI="platform:/plugin/com.example.e4.rcp/icons/open_in_app.png" command="_6wlLgMgZEeSyMNYR5xypkQ"/>\r
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_6wlLjMgZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.handleditem.save" label="Save" iconURI="platform:/plugin/com.example.e4.rcp/icons/save_edit.png" command="_6wlLg8gZEeSyMNYR5xypkQ"/>\r
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_6wlLjcgZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.handleditem.quit" label="Quit" command="_6wlLfMgZEeSyMNYR5xypkQ"/>\r
+ </children>\r
+ <children xsi:type="menu:Menu" xmi:id="_6wlLjsgZEeSyMNYR5xypkQ" elementId="help" label="Help">\r
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_6wlLj8gZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.handleditem.about" label="About" command="_6wlLhsgZEeSyMNYR5xypkQ"/>\r
+ </children>\r
+ </mainMenu>\r
+ <trimBars xmi:id="_6wlLlcgZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.trimbar.top">\r
+ <children xsi:type="menu:ToolBar" xmi:id="_6wlLlsgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.main.toolbar">\r
+ <children xsi:type="menu:HandledToolItem" xmi:id="_6wlLmMgZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.handleditem.trimbar.top.save" iconURI="platform:/plugin/com.example.e4.rcp/icons/save_edit.png" command="_6wlLg8gZEeSyMNYR5xypkQ"/>\r
+ <children xsi:type="menu:HandledToolItem" xmi:id="_6wlLl8gZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.handleditem.trimbar.top.open" iconURI="platform:/plugin/com.example.e4.rcp/icons/open_in_app.png" command="_6wlLgMgZEeSyMNYR5xypkQ"/>\r
+ </children>\r
+ </trimBars>\r
+ </children>\r
+ <handlers xmi:id="_6wlLfcgZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.handler.quitCommand" contributionURI="bundleclass://com.example.e4.rcp/com.example.e4.rcp.handlers.QuitHandler" command="_6wlLfMgZEeSyMNYR5xypkQ"/>\r
+ <handlers xmi:id="_6wlLgcgZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.handler.openCommand" contributionURI="bundleclass://com.example.e4.rcp/com.example.e4.rcp.handlers.OpenHandler" command="_6wlLgMgZEeSyMNYR5xypkQ"/>\r
+ <handlers xmi:id="_6wlLhMgZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.handler.saveCommand" contributionURI="bundleclass://com.example.e4.rcp/com.example.e4.rcp.handlers.SaveHandler" command="_6wlLg8gZEeSyMNYR5xypkQ"/>\r
+ <handlers xmi:id="_6wlLh8gZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.handler.aboutCommand" contributionURI="bundleclass://com.example.e4.rcp/com.example.e4.rcp.handlers.AboutHandler" command="_6wlLhsgZEeSyMNYR5xypkQ"/>\r
+ <bindingTables xmi:id="_6wlLfsgZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.bindingtable" bindingContext="_6wlLecgZEeSyMNYR5xypkQ">\r
+ <bindings xmi:id="_6wlLf8gZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.keybinding.m1q" keySequence="M1+Q" command="_6wlLfMgZEeSyMNYR5xypkQ"/>\r
+ <bindings xmi:id="_6wlLgsgZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.keybinding.m1o" keySequence="M1+O" command="_6wlLgMgZEeSyMNYR5xypkQ"/>\r
+ <bindings xmi:id="_6wlLhcgZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.keybinding.m1s" keySequence="M1+S" command="_6wlLg8gZEeSyMNYR5xypkQ"/>\r
+ <bindings xmi:id="_6wlLiMgZEeSyMNYR5xypkQ" elementId="com.example.e4.rcp.keybinding.m1a" keySequence="M1+A" command="_6wlLhsgZEeSyMNYR5xypkQ"/>\r
+ </bindingTables>\r
+ <rootContext xmi:id="_6wlLecgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows">\r
+ <children xmi:id="_6wlLesgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.window" name="In Windows"/>\r
+ <children xmi:id="_6wlLe8gZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>\r
+ </rootContext>\r
+ <commands xmi:id="_6wlLfMgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.file.exit" commandName="quitCommand"/>\r
+ <commands xmi:id="_6wlLgMgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.file.open" commandName="openCommand"/>\r
+ <commands xmi:id="_6wlLg8gZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.file.save" commandName="saveCommand"/>\r
+ <commands xmi:id="_6wlLhsgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.help.aboutAction" commandName="aboutCommand"/>\r
+ <addons xmi:id="_6wlLcsgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>\r
+ <addons xmi:id="_6wlLc8gZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>\r
+ <addons xmi:id="_6wlLdMgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>\r
+ <addons xmi:id="_6wlLdcgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>\r
+ <addons xmi:id="_6wlLdsgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.handler.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon"/>\r
+ <addons xmi:id="_6wlLd8gZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>\r
+ <addons xmi:id="_6wlLeMgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>\r
+</application:Application>\r
--- /dev/null
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Rcp
+Bundle-SymbolicName: com.example.e4.rcp;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: EXAMPLE
+Require-Bundle: javax.inject;bundle-version="0.0.0",
+ org.eclipse.core.runtime;bundle-version="0.0.0",
+ org.eclipse.swt;bundle-version="0.0.0",
+ org.eclipse.e4.ui.model.workbench;bundle-version="0.0.0",
+ org.eclipse.jface;bundle-version="0.0.0",
+ org.eclipse.e4.ui.services;bundle-version="0.0.0",
+ org.eclipse.e4.ui.workbench;bundle-version="0.0.0",
+ org.eclipse.e4.core.di;bundle-version="0.0.0",
+ org.eclipse.e4.ui.di;bundle-version="0.0.0",
+ org.eclipse.e4.core.contexts;bundle-version="0.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Import-Package: javax.annotation;version="1.0.0";resolution:=optional,
+ javax.inject;version="1.0.0"
+Automatic-Module-Name: com.example.e4.rcp
--- /dev/null
+source.. = src/\r
+output.. = bin/\r
+bin.includes = plugin.xml,\\r
+ META-INF/,\\r
+ .,\\r
+ icons/,\\r
+ css/default.css,\\r
+ Application.e4xmi\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="com.example.e4.rcp" id="com.example.e4.rcp.product" application="org.eclipse.e4.ui.workbench.swt.E4Application" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="true">
+
+
+ <configIni use="default">
+ </configIni>
+
+ <launcherArgs>
+ <programArgs>-clearPersistedState
+ </programArgs>
+ <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+ </vmArgsMac>
+ </launcherArgs>
+
+ <windowImages i16="/com.example.e4.rcp/icons/debug_view.png"/>
+
+
+ <plugins>
+ <plugin id="com.example.e4.rcp"/>
+ <plugin id="com.ibm.icu"/>
+ <plugin id="javax.annotation"/>
+ <plugin id="javax.inject"/>
+ <plugin id="org.apache.batik.constants"/>
+ <plugin id="org.apache.batik.css"/>
+ <plugin id="org.apache.batik.i18n"/>
+ <plugin id="org.apache.batik.util"/>
+ <plugin id="org.apache.commons.io"/>
+ <plugin id="org.apache.commons.jxpath"/>
+ <plugin id="org.apache.commons.logging"/>
+ <plugin id="org.apache.felix.scr"/>
+ <plugin id="org.apache.xmlgraphics"/>
+ <plugin id="org.eclipse.core.commands"/>
+ <plugin id="org.eclipse.core.contenttype"/>
+ <plugin id="org.eclipse.core.databinding"/>
+ <plugin id="org.eclipse.core.databinding.beans"/>
+ <plugin id="org.eclipse.core.databinding.observable"/>
+ <plugin id="org.eclipse.core.databinding.property"/>
+ <plugin id="org.eclipse.core.expressions"/>
+ <plugin id="org.eclipse.core.jobs"/>
+ <plugin id="org.eclipse.core.runtime"/>
+ <plugin id="org.eclipse.e4.core.commands"/>
+ <plugin id="org.eclipse.e4.core.contexts"/>
+ <plugin id="org.eclipse.e4.core.di"/>
+ <plugin id="org.eclipse.e4.core.di.annotations"/>
+ <plugin id="org.eclipse.e4.core.di.extensions"/>
+ <plugin id="org.eclipse.e4.core.di.extensions.supplier"/>
+ <plugin id="org.eclipse.e4.core.services"/>
+ <plugin id="org.eclipse.e4.emf.xpath"/>
+ <plugin id="org.eclipse.e4.ui.bindings"/>
+ <plugin id="org.eclipse.e4.ui.css.core"/>
+ <plugin id="org.eclipse.e4.ui.css.swt"/>
+ <plugin id="org.eclipse.e4.ui.css.swt.theme"/>
+ <plugin id="org.eclipse.e4.ui.di"/>
+ <plugin id="org.eclipse.e4.ui.model.workbench"/>
+ <plugin id="org.eclipse.e4.ui.services"/>
+ <plugin id="org.eclipse.e4.ui.swt.gtk" fragment="true"/>
+ <plugin id="org.eclipse.e4.ui.widgets"/>
+ <plugin id="org.eclipse.e4.ui.workbench"/>
+ <plugin id="org.eclipse.e4.ui.workbench.addons.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.cocoa" fragment="true"/>
+ <plugin id="org.eclipse.e4.ui.workbench.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench3"/>
+ <plugin id="org.eclipse.emf.common"/>
+ <plugin id="org.eclipse.emf.databinding"/>
+ <plugin id="org.eclipse.emf.ecore"/>
+ <plugin id="org.eclipse.emf.ecore.change"/>
+ <plugin id="org.eclipse.emf.ecore.xmi"/>
+ <plugin id="org.eclipse.equinox.app"/>
+ <plugin id="org.eclipse.equinox.common"/>
+ <plugin id="org.eclipse.equinox.concurrent"/>
+ <plugin id="org.eclipse.equinox.event"/>
+ <plugin id="org.eclipse.equinox.preferences"/>
+ <plugin id="org.eclipse.equinox.registry"/>
+ <plugin id="org.eclipse.jface"/>
+ <plugin id="org.eclipse.jface.databinding"/>
+ <plugin id="org.eclipse.osgi"/>
+ <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
+ <plugin id="org.eclipse.osgi.services"/>
+ <plugin id="org.eclipse.osgi.util"/>
+ <plugin id="org.eclipse.swt"/>
+ <plugin id="org.eclipse.swt.cocoa.macosx.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.ppc64" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
+ <plugin id="org.w3c.css.sac"/>
+ <plugin id="org.w3c.dom.events"/>
+ <plugin id="org.w3c.dom.smil"/>
+ <plugin id="org.w3c.dom.svg"/>
+ </plugins>
+
+
+ <preferencesInfo>
+ <targetfile overwrite="false"/>
+ </preferencesInfo>
+
+ <cssInfo>
+ </cssInfo>
+
+</product>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<?eclipse version="3.4"?>\r
+<plugin>\r
+\r
+ <extension\r
+ id="product"\r
+ point="org.eclipse.core.runtime.products">\r
+ <product\r
+ application="org.eclipse.e4.ui.workbench.swt.E4Application"\r
+ name="com.example.e4.rcp">\r
+ <property\r
+ name="applicationCSS"\r
+ value="platform:/plugin/com.example.e4.rcp/css/default.css">\r
+ </property>\r
+ <property\r
+ name="appName"\r
+ value="com.example.e4.rcp">\r
+ </property>\r
+ </product>\r
+ </extension>\r
+\r
+</plugin>\r
--- /dev/null
+package com.example.e4.rcp.handlers;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+
+public class AboutHandler {
+ @Execute
+ public void execute(Shell shell) {
+ MessageDialog.openInformation(shell, "About", "Eclipse 4 RCP Application");
+ }
+}
--- /dev/null
+package com.example.e4.rcp.handlers;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Shell;
+public class OpenHandler {
+
+ @Execute
+ public void execute(Shell shell){
+ FileDialog dialog = new FileDialog(shell);
+ dialog.open();
+ }
+}
--- /dev/null
+package com.example.e4.rcp.handlers;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.workbench.IWorkbench;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+
+
+public class QuitHandler {
+ @Execute
+ public void execute(IWorkbench workbench, Shell shell){
+ if (MessageDialog.openConfirm(shell, "Confirmation",
+ "Do you want to exit?")) {
+ workbench.close();
+ }
+ }
+}
--- /dev/null
+package com.example.e4.rcp.handlers;
+
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+
+public class SaveHandler {
+
+ @CanExecute
+ public boolean canExecute(EPartService partService) {
+ if (partService != null) {
+ return !partService.getDirtyParts().isEmpty();
+ }
+ return false;
+ }
+
+ @Execute
+ public void execute(EPartService partService) {
+ partService.saveAll(false);
+ }
+}
\ No newline at end of file
--- /dev/null
+ \r
+package com.example.e4.rcp.parts;\r
+\r
+import javax.inject.Inject;\r
+import javax.annotation.PostConstruct;\r
+import org.eclipse.swt.widgets.Composite;\r
+\r
+public class NPart {\r
+ @Inject\r
+ public NPart() {\r
+ \r
+ }\r
+ \r
+ @PostConstruct\r
+ public void postConstruct(Composite parent) {\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ \r
+}
\ No newline at end of file
--- /dev/null
+package com.example.e4.rcp.parts;
+
+import java.util.Arrays;
+import java.util.List;
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.e4.ui.di.Focus;
+import org.eclipse.e4.ui.di.Persist;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+
+public class SamplePart {
+
+ private TableViewer tableViewer;
+
+ @Inject
+ private MPart part;
+
+ @PostConstruct
+ public void createComposite(Composite parent) {
+ parent.setLayout(new GridLayout(1, false));
+
+ Text txtInput = new Text(parent, SWT.BORDER);
+ txtInput.setMessage("Enter text to mark part as dirty");
+ txtInput.addModifyListener(e -> part.setDirty(true));
+ txtInput.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ tableViewer = new TableViewer(parent);
+
+ tableViewer.setContentProvider(ArrayContentProvider.getInstance());
+ tableViewer.setInput(createInitialDataModel());
+ tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
+ }
+
+ @Focus
+ public void setFocus() {
+ tableViewer.getTable().setFocus();
+ }
+
+ @Persist
+ public void save() {
+ part.setDirty(false);
+ }
+
+ private List<String> createInitialDataModel() {
+ return Arrays.asList("Sample item 1", "Sample item 2", "Sample item 3", "Sample item 4", "Sample item 5");
+ }
+}
\ No newline at end of file