From d26bc5b203b6afc1470e8561f52dd6fa620ae7ab Mon Sep 17 00:00:00 2001 From: Christian Femers Date: Mon, 29 Apr 2019 12:57:37 +0200 Subject: [PATCH] Basic Test --- com.example.e4.rcp/.classpath | 7 ++ com.example.e4.rcp/.gitignore | 1 + com.example.e4.rcp/.project | 28 +++++ .../.settings/org.eclipse.jdt.core.prefs | 9 ++ com.example.e4.rcp/Application.e4xmi | 54 ++++++++++ com.example.e4.rcp/META-INF/MANIFEST.MF | 20 ++++ com.example.e4.rcp/build.properties | 8 ++ com.example.e4.rcp/com.example.e4.rcp.product | 102 ++++++++++++++++++ com.example.e4.rcp/css/default.css | 0 com.example.e4.rcp/icons/debug_view.png | Bin 0 -> 563 bytes com.example.e4.rcp/icons/home.png | Bin 0 -> 287 bytes com.example.e4.rcp/icons/open_in_app.png | Bin 0 -> 315 bytes com.example.e4.rcp/icons/save_edit.png | Bin 0 -> 367 bytes com.example.e4.rcp/plugin.xml | 22 ++++ .../example/e4/rcp/handlers/AboutHandler.java | 12 +++ .../example/e4/rcp/handlers/OpenHandler.java | 13 +++ .../example/e4/rcp/handlers/QuitHandler.java | 17 +++ .../example/e4/rcp/handlers/SaveHandler.java | 21 ++++ .../src/com/example/e4/rcp/parts/NPart.java | 22 ++++ .../com/example/e4/rcp/parts/SamplePart.java | 55 ++++++++++ 20 files changed, 391 insertions(+) create mode 100644 com.example.e4.rcp/.classpath create mode 100644 com.example.e4.rcp/.gitignore create mode 100644 com.example.e4.rcp/.project create mode 100644 com.example.e4.rcp/.settings/org.eclipse.jdt.core.prefs create mode 100644 com.example.e4.rcp/Application.e4xmi create mode 100644 com.example.e4.rcp/META-INF/MANIFEST.MF create mode 100644 com.example.e4.rcp/build.properties create mode 100644 com.example.e4.rcp/com.example.e4.rcp.product create mode 100644 com.example.e4.rcp/css/default.css create mode 100644 com.example.e4.rcp/icons/debug_view.png create mode 100644 com.example.e4.rcp/icons/home.png create mode 100644 com.example.e4.rcp/icons/open_in_app.png create mode 100644 com.example.e4.rcp/icons/save_edit.png create mode 100644 com.example.e4.rcp/plugin.xml create mode 100644 com.example.e4.rcp/src/com/example/e4/rcp/handlers/AboutHandler.java create mode 100644 com.example.e4.rcp/src/com/example/e4/rcp/handlers/OpenHandler.java create mode 100644 com.example.e4.rcp/src/com/example/e4/rcp/handlers/QuitHandler.java create mode 100644 com.example.e4.rcp/src/com/example/e4/rcp/handlers/SaveHandler.java create mode 100644 com.example.e4.rcp/src/com/example/e4/rcp/parts/NPart.java create mode 100644 com.example.e4.rcp/src/com/example/e4/rcp/parts/SamplePart.java diff --git a/com.example.e4.rcp/.classpath b/com.example.e4.rcp/.classpath new file mode 100644 index 00000000..e801ebfb --- /dev/null +++ b/com.example.e4.rcp/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/com.example.e4.rcp/.gitignore b/com.example.e4.rcp/.gitignore new file mode 100644 index 00000000..ae3c1726 --- /dev/null +++ b/com.example.e4.rcp/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/com.example.e4.rcp/.project b/com.example.e4.rcp/.project new file mode 100644 index 00000000..63c2bd15 --- /dev/null +++ b/com.example.e4.rcp/.project @@ -0,0 +1,28 @@ + + + com.example.e4.rcp + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/com.example.e4.rcp/.settings/org.eclipse.jdt.core.prefs b/com.example.e4.rcp/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..c9545f06 --- /dev/null +++ b/com.example.e4.rcp/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.compliance=11 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=11 diff --git a/com.example.e4.rcp/Application.e4xmi b/com.example.e4.rcp/Application.e4xmi new file mode 100644 index 00000000..bb06bf60 --- /dev/null +++ b/com.example.e4.rcp/Application.e4xmi @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/com.example.e4.rcp/META-INF/MANIFEST.MF b/com.example.e4.rcp/META-INF/MANIFEST.MF new file mode 100644 index 00000000..ae7ce585 --- /dev/null +++ b/com.example.e4.rcp/META-INF/MANIFEST.MF @@ -0,0 +1,20 @@ +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 diff --git a/com.example.e4.rcp/build.properties b/com.example.e4.rcp/build.properties new file mode 100644 index 00000000..04ab1e9b --- /dev/null +++ b/com.example.e4.rcp/build.properties @@ -0,0 +1,8 @@ +source.. = src/ +output.. = bin/ +bin.includes = plugin.xml,\ + META-INF/,\ + .,\ + icons/,\ + css/default.css,\ + Application.e4xmi diff --git a/com.example.e4.rcp/com.example.e4.rcp.product b/com.example.e4.rcp/com.example.e4.rcp.product new file mode 100644 index 00000000..eaf91b83 --- /dev/null +++ b/com.example.e4.rcp/com.example.e4.rcp.product @@ -0,0 +1,102 @@ + + + + + + + + + + + -clearPersistedState + + -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/com.example.e4.rcp/css/default.css b/com.example.e4.rcp/css/default.css new file mode 100644 index 00000000..e69de29b diff --git a/com.example.e4.rcp/icons/debug_view.png b/com.example.e4.rcp/icons/debug_view.png new file mode 100644 index 0000000000000000000000000000000000000000..97d5e2d7a7e597f09a276ef497bb79d098a29972 GIT binary patch literal 563 zcmV-30?hr1P)CP|w388KCdy_#e&=c5ycda=A^kX5IXnbmRQ;{|1@4 zXLMpB9Q1r0UhDfh*bwxyL9qLMT~F)#`uWxWHk{f0KYmixKc||ef3}tN|9slpj+sOR z`RRMx-Ub?YSvS~C1J%zF9tvRWVWFU(Q}QLMFaN(orT_n(7mxqneD1*ivcXm zw=GET)%9_R)(>$0Z4m7CAG;S4lhZ+pPu)B7|Mtrp{~y1*|NrvS)BoojSo~inxBQnu zL4^YDzzcM-0s8m0c233rvky=HzxM1R&;{%NpSXA6|DNj`{-@4t{jZl-dJ=m$gnHgL z2y}g|@9pRgwCUc&?F;{(d3gB$&MTY#x2&)Gzx?E!|GnG0|Es1IeAM-_`LE~a@Z1nr|C$K`zkr;h-~V1pnx z>qoRkBdfl=jj8OB$#HYP1^7z6;*1d{*MT&zE< zxmjuuZGeM=0}Ch2?7 z8z9Vhe8JAOKtah8*NBqf{Irtt#G+J&^73-M%)IR4>pzYytd7IX2W@6jE#VLk=@Y^=+HRl(Wk4)d1)IGEpo%M1OdgR8m&)^N; z8}rYG)+L*dy*WKQER3V#VVkU)<{?$S3b#Vjbteq6gwJg}zSuRQpL^R^CPl{xeyuXI zi>~s0Q<`@!KA?2ZpR=-ACyKk%QsVoTyAS@euDTtna6HoT$~qb5n#b+)#WSVO?@9mu bu!4Eh6VIQP`W^v5cQSao`njxgN@xNA+l6XM literal 0 HcmV?d00001 diff --git a/com.example.e4.rcp/icons/open_in_app.png b/com.example.e4.rcp/icons/open_in_app.png new file mode 100644 index 0000000000000000000000000000000000000000..9df4eeb7c3b8e6d1ff41f77b6032062a0edb4695 GIT binary patch literal 315 zcmeAS@N?(olHy`uVBq!ia0vp^!ayv*!3HG19C1kkQY^(zo*^7SP{WbZ0pxQQctjQh z)vX6%#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6e?@N{tu zvFLq!c_Zf`2a#hR|94N4j5!#h_dtj-IC6$*&L^$u0lP(-9tcGq(CS-Y%+i-WQA1Ox zPvYRQ^?&>B?`^JLw5nQxRjow5e^JI{mCn~M?{nG+9N49EIwo|volnTsn)X>SE>Et6 z&X~!4c*BQ#*SvDl3gaU~uj)!P{4~n2?p zD}XSgpwrRCKtah8*NBqf{Irtt#G+J&^73-M%)IR45}niK43oDoay_VY{~%!TkJHeT zagA#4?Mv_MdONO8`@-c@C42nbRn8AP_!%B-iNCC}_SPK1!YP-t4+zZom)=sle}nLc z$hr2+`x<6XxumevgyEgm+wiZ&N*@$5cV5+3iDlUACp_b(m9qWQJ&_JBb5fstKF9DN z>{9C89lu2j<{Do+ePv5${#Dzoiu+$0EI(XKkl5OKHs>F&{AoMO<{t+vf&OOjboFyt I=akR{0M|T{IRF3v literal 0 HcmV?d00001 diff --git a/com.example.e4.rcp/plugin.xml b/com.example.e4.rcp/plugin.xml new file mode 100644 index 00000000..0c2671b9 --- /dev/null +++ b/com.example.e4.rcp/plugin.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/com.example.e4.rcp/src/com/example/e4/rcp/handlers/AboutHandler.java b/com.example.e4.rcp/src/com/example/e4/rcp/handlers/AboutHandler.java new file mode 100644 index 00000000..e1348aba --- /dev/null +++ b/com.example.e4.rcp/src/com/example/e4/rcp/handlers/AboutHandler.java @@ -0,0 +1,12 @@ +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"); + } +} diff --git a/com.example.e4.rcp/src/com/example/e4/rcp/handlers/OpenHandler.java b/com.example.e4.rcp/src/com/example/e4/rcp/handlers/OpenHandler.java new file mode 100644 index 00000000..9f240d8c --- /dev/null +++ b/com.example.e4.rcp/src/com/example/e4/rcp/handlers/OpenHandler.java @@ -0,0 +1,13 @@ +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(); + } +} diff --git a/com.example.e4.rcp/src/com/example/e4/rcp/handlers/QuitHandler.java b/com.example.e4.rcp/src/com/example/e4/rcp/handlers/QuitHandler.java new file mode 100644 index 00000000..9fce036d --- /dev/null +++ b/com.example.e4.rcp/src/com/example/e4/rcp/handlers/QuitHandler.java @@ -0,0 +1,17 @@ +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(); + } + } +} diff --git a/com.example.e4.rcp/src/com/example/e4/rcp/handlers/SaveHandler.java b/com.example.e4.rcp/src/com/example/e4/rcp/handlers/SaveHandler.java new file mode 100644 index 00000000..e15be940 --- /dev/null +++ b/com.example.e4.rcp/src/com/example/e4/rcp/handlers/SaveHandler.java @@ -0,0 +1,21 @@ +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 diff --git a/com.example.e4.rcp/src/com/example/e4/rcp/parts/NPart.java b/com.example.e4.rcp/src/com/example/e4/rcp/parts/NPart.java new file mode 100644 index 00000000..fd025eac --- /dev/null +++ b/com.example.e4.rcp/src/com/example/e4/rcp/parts/NPart.java @@ -0,0 +1,22 @@ + +package com.example.e4.rcp.parts; + +import javax.inject.Inject; +import javax.annotation.PostConstruct; +import org.eclipse.swt.widgets.Composite; + +public class NPart { + @Inject + public NPart() { + + } + + @PostConstruct + public void postConstruct(Composite parent) { + + } + + + + +} \ No newline at end of file diff --git a/com.example.e4.rcp/src/com/example/e4/rcp/parts/SamplePart.java b/com.example.e4.rcp/src/com/example/e4/rcp/parts/SamplePart.java new file mode 100644 index 00000000..160ba8ac --- /dev/null +++ b/com.example.e4.rcp/src/com/example/e4/rcp/parts/SamplePart.java @@ -0,0 +1,55 @@ +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 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 -- 2.17.1