project to use gson (no success)pull/2/head
| @@ -1,7 +1,16 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
| <classpath> | <classpath> | ||||
| <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> | |||||
| <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> | |||||
| <attributes> | |||||
| <attribute name="maven.pomderived" value="true"/> | |||||
| </attributes> | |||||
| </classpathentry> | |||||
| <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> | <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> | ||||
| <classpathentry kind="src" path="src"/> | <classpathentry kind="src" path="src"/> | ||||
| <classpathentry kind="output" path="bin"/> | |||||
| <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> | |||||
| <attributes> | |||||
| <attribute name="maven.pomderived" value="true"/> | |||||
| </attributes> | |||||
| </classpathentry> | |||||
| <classpathentry kind="output" path="target/classes"/> | |||||
| </classpath> | </classpath> | ||||
| @@ -0,0 +1 @@ | |||||
| /target/ | |||||
| @@ -20,8 +20,14 @@ | |||||
| <arguments> | <arguments> | ||||
| </arguments> | </arguments> | ||||
| </buildCommand> | </buildCommand> | ||||
| <buildCommand> | |||||
| <name>org.eclipse.m2e.core.maven2Builder</name> | |||||
| <arguments> | |||||
| </arguments> | |||||
| </buildCommand> | |||||
| </buildSpec> | </buildSpec> | ||||
| <natures> | <natures> | ||||
| <nature>org.eclipse.m2e.core.maven2Nature</nature> | |||||
| <nature>org.eclipse.pde.PluginNature</nature> | <nature>org.eclipse.pde.PluginNature</nature> | ||||
| <nature>org.eclipse.jdt.core.javanature</nature> | <nature>org.eclipse.jdt.core.javanature</nature> | ||||
| </natures> | </natures> | ||||
| @@ -1,17 +1,25 @@ | |||||
| <?xml version="1.0" encoding="ASCII"?> | <?xml version="1.0" encoding="ASCII"?> | ||||
| <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="_Lw_ZsEqSEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.application"> | <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="_Lw_ZsEqSEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.application"> | ||||
| <children xsi:type="basic:TrimmedWindow" xmi:id="_QDxdgEqSEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.trimmedwindow.main" label="BGG Tool Another" width="1200" height="800"> | |||||
| <children xsi:type="basic:TrimmedWindow" xmi:id="_QDxdgEqSEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.trimmedwindow.main" label="BGG Tool Another" width="1600" height="900"> | |||||
| <children xsi:type="basic:PartSashContainer" xmi:id="_B_h_UEqVEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.partsashcontainer.0"> | <children xsi:type="basic:PartSashContainer" xmi:id="_B_h_UEqVEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.partsashcontainer.0"> | ||||
| <children xsi:type="basic:PartSashContainer" xmi:id="_tbnr0EqTEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.partsashcontainer.main" horizontal="true"> | <children xsi:type="basic:PartSashContainer" xmi:id="_tbnr0EqTEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.partsashcontainer.main" horizontal="true"> | ||||
| <children xsi:type="basic:PartSashContainer" xmi:id="_4NsHQEqTEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.partsashcontainer.bggload"> | |||||
| <children xsi:type="basic:PartStack" xmi:id="_7KNiwEqTEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.partstack.bggloadconf" containerData="1400"> | |||||
| <children xsi:type="basic:Part" xmi:id="_9ocfwEqTEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.part.resultconfig" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.parts.LoadFromBggPart" label="Prepare"/> | |||||
| <children xsi:type="basic:Part" xmi:id="_-Mdy0EqTEeqT5sxfmvJ5Tg" elementId="de.wt.bgg.ui.part.gamesconfig" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.parts.LoadThingDetailsPart" label="Download games"/> | |||||
| <children xsi:type="basic:PartSashContainer" xmi:id="_4NsHQEqTEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.partsashcontainer.left"> | |||||
| <children xsi:type="basic:PartStack" xmi:id="_7KNiwEqTEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.partstack.leftupper" containerData="800"> | |||||
| <children xsi:type="basic:Part" xmi:id="_9ocfwEqTEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.part.resultconfig" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.parts.PreparePart" label="Prepare"/> | |||||
| </children> | |||||
| <children xsi:type="basic:PartStack" xmi:id="_0OB_gJ2wEeqjssfAjxHZ-w" elementId="xyz.veronie.bgg.ui.partstack.leftlower" containerData="800"> | |||||
| <children xsi:type="basic:Part" xmi:id="_97XbwEqTEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.part.resulttable" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.parts.BggResultPart" label="BGG Result"> | |||||
| <toolbar xmi:id="_ZZOF8J3AEeqjssfAjxHZ-w" elementId="xyz.veronie.bgg.ui.toolbar.0"> | |||||
| <children xsi:type="menu:DirectToolItem" xmi:id="_c42V4J29EeqjssfAjxHZ-w" elementId="xyz.veronie.bgg.ui.directtoolitem.saveResult" label="save result" iconURI="platform:/plugin/xyz.veronie.bgg.ui/icons/save-button.png" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.handlers.HandleSaveGamelist"/> | |||||
| </toolbar> | |||||
| </children> | |||||
| </children> | </children> | ||||
| </children> | </children> | ||||
| <children xsi:type="basic:PartSashContainer" xmi:id="_AF1vQEqUEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.partsashcontainer.gamelist"> | |||||
| <children xsi:type="basic:PartStack" xmi:id="_0MbRQEqTEeqT5sxfmvJ5Tg" elementId="de.wt.bgg.ui.partstack.gameslist" containerData="300"> | |||||
| <children xsi:type="basic:Part" xmi:id="_97XbwEqTEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.part.resulttable" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.parts.BggResultPart" label="BGG Result"/> | |||||
| <children xsi:type="basic:PartSashContainer" xmi:id="_AF1vQEqUEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.partsashcontainer.right"> | |||||
| <children xsi:type="basic:PartStack" xmi:id="_0MbRQEqTEeqT5sxfmvJ5Tg" elementId="de.wt.bgg.ui.partstack.rightupper" containerData="800"> | |||||
| <children xsi:type="basic:Part" xmi:id="_-Mdy0EqTEeqT5sxfmvJ5Tg" elementId="de.wt.bgg.ui.part.gamesconfig" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.parts.DownloadThingDetailsPart" label="Download games"/> | |||||
| </children> | |||||
| <children xsi:type="basic:PartStack" xmi:id="_2M6HAJ2wEeqjssfAjxHZ-w" elementId="xyz.veronie.bgg.ui.rightlower" containerData="800"> | |||||
| <children xsi:type="basic:Part" xmi:id="_Ckm3wEqUEeqT5sxfmvJ5Tg" elementId="de.wt.bgg.ui.part.gamestable" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.parts.ThingListPart" label="Games list"/> | <children xsi:type="basic:Part" xmi:id="_Ckm3wEqUEeqT5sxfmvJ5Tg" elementId="de.wt.bgg.ui.part.gamestable" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.parts.ThingListPart" label="Games list"/> | ||||
| </children> | </children> | ||||
| </children> | </children> | ||||
| @@ -21,6 +29,9 @@ | |||||
| <trimBars xmi:id="_I6MLEFv-EeqNgfoocONcgg" elementId="xyz.veronie.bgg.ui.trimbar.bottom" side="Bottom"> | <trimBars xmi:id="_I6MLEFv-EeqNgfoocONcgg" elementId="xyz.veronie.bgg.ui.trimbar.bottom" side="Bottom"> | ||||
| <children xsi:type="menu:ToolControl" xmi:id="_JQ6B8Fv-EeqNgfoocONcgg" elementId="xyz.veronie.bgg.ui.toolcontrol.status" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.parts.StatusBar"/> | <children xsi:type="menu:ToolControl" xmi:id="_JQ6B8Fv-EeqNgfoocONcgg" elementId="xyz.veronie.bgg.ui.toolcontrol.status" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.parts.StatusBar"/> | ||||
| </trimBars> | </trimBars> | ||||
| <trimBars xmi:id="__2T2oIubEeqEpr8WQZMuMQ" elementId="xyz.veronie.bgg.ui.trimbar.0"> | |||||
| <children xsi:type="menu:ToolBar" xmi:id="_AX9yMIucEeqEpr8WQZMuMQ" elementId="xyz.veronie.bgg.ui.toolbar.testbar"/> | |||||
| </trimBars> | |||||
| </children> | </children> | ||||
| <addons xmi:id="_Lw_ZsUqSEeqT5sxfmvJ5Tg" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/> | <addons xmi:id="_Lw_ZsUqSEeqT5sxfmvJ5Tg" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/> | ||||
| <addons xmi:id="_Lw_ZskqSEeqT5sxfmvJ5Tg" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/> | <addons xmi:id="_Lw_ZskqSEeqT5sxfmvJ5Tg" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/> | ||||
| @@ -13,10 +13,10 @@ Require-Bundle: org.eclipse.core.runtime, | |||||
| org.eclipse.jface, | org.eclipse.jface, | ||||
| org.eclipse.e4.core.services, | org.eclipse.e4.core.services, | ||||
| org.eclipse.osgi.services, | org.eclipse.osgi.services, | ||||
| javax.inject | |||||
| javax.inject, | |||||
| org.eclipse.e4.ui.model.workbench | |||||
| Automatic-Module-Name: de.wt.secondtry | Automatic-Module-Name: de.wt.secondtry | ||||
| Bundle-RequiredExecutionEnvironment: JavaSE-1.8 | Bundle-RequiredExecutionEnvironment: JavaSE-1.8 | ||||
| Import-Package: com.google.gson;version="2.8.2", | |||||
| javax.inject;version="1.0.0", | |||||
| Import-Package: javax.inject;version="1.0.0", | |||||
| org.eclipse.e4.ui.model.application.descriptor.basic, | org.eclipse.e4.ui.model.application.descriptor.basic, | ||||
| org.eclipse.e4.ui.model.application.ui.basic | org.eclipse.e4.ui.model.application.ui.basic | ||||
| @@ -1,5 +1,6 @@ | |||||
| output.. = bin/ | output.. = bin/ | ||||
| bin.includes = META-INF/,\ | bin.includes = META-INF/,\ | ||||
| .,\ | .,\ | ||||
| plugin.xml,\ | |||||
| Application.e4xmi | Application.e4xmi | ||||
| source.. = src/ | source.. = src/ | ||||
| @@ -8,7 +8,7 @@ | |||||
| <artifactId>xyz.veronie.bgg.ui</artifactId> | <artifactId>xyz.veronie.bgg.ui</artifactId> | ||||
| <version>0.0.1-SNAPSHOT</version> | <version>0.0.1-SNAPSHOT</version> | ||||
| <name>xyz.veronie.bgg.ui2</name> | |||||
| <name>xyz.veronie.bgg.ui</name> | |||||
| <!-- FIXME change it to the project's website --> | <!-- FIXME change it to the project's website --> | ||||
| <url>http://www.example.com</url> | <url>http://www.example.com</url> | ||||
| @@ -19,17 +19,17 @@ | |||||
| </properties> | </properties> | ||||
| <dependencies> | <dependencies> | ||||
| <dependency> | |||||
| <groupId>com.google.code.gson</groupId> | |||||
| <artifactId>gson</artifactId> | |||||
| <version>2.8.6</version> | |||||
| </dependency> | |||||
| <dependency> | <dependency> | ||||
| <groupId>junit</groupId> | <groupId>junit</groupId> | ||||
| <artifactId>junit</artifactId> | <artifactId>junit</artifactId> | ||||
| <version>4.11</version> | <version>4.11</version> | ||||
| <scope>test</scope> | <scope>test</scope> | ||||
| </dependency> | </dependency> | ||||
| <dependency> | |||||
| <groupId>com.google.code.gson</groupId> | |||||
| <artifactId>gson</artifactId> | |||||
| <version>2.8.6</version> | |||||
| </dependency> | |||||
| </dependencies> | </dependencies> | ||||
| <build> | <build> | ||||
| @@ -1,5 +0,0 @@ | |||||
| package xyz.veronie.bgg.result; | |||||
| public class BggFamily { | |||||
| } | |||||
| @@ -6,17 +6,12 @@ import java.io.IOException; | |||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.function.Predicate; | import java.util.function.Predicate; | ||||
| import xyz.veronie.bgg.result.ThingMetaData; | |||||
| import javax.inject.Inject; | |||||
| import org.eclipse.e4.core.di.annotations.Optional; | |||||
| import org.eclipse.e4.ui.di.UIEventTopic; | |||||
| import org.eclipse.core.runtime.Path; | |||||
| import com.google.gson.Gson; | import com.google.gson.Gson; | ||||
| import xyz.veronie.bgg.types.EventConstants; | |||||
| import xyz.veronie.bgg.types.SourceFilter; | |||||
| public enum ThingProvider { | public enum ThingProvider { | ||||
| INSTANCE; | INSTANCE; | ||||
| @@ -48,8 +43,8 @@ public enum ThingProvider { | |||||
| } | } | ||||
| // helper functino for subtractThingMetas | |||||
| private static Predicate<ThingMetaData> thingEqual(ThingMetaData other) | |||||
| // helper function for subtractThingMetas | |||||
| private static Predicate<ThingMetaData> thingEqual(final ThingMetaData other) | |||||
| { | { | ||||
| return p -> p.getId() == other.getId(); | return p -> p.getId() == other.getId(); | ||||
| } | } | ||||
| @@ -80,9 +75,12 @@ public enum ThingProvider { | |||||
| String resultList = gson.toJson(this.thingMetas); | String resultList = gson.toJson(this.thingMetas); | ||||
| try { | try { | ||||
| Path filesPath = new Path("result_" + Long.toString(System.currentTimeMillis())); | |||||
| System.out.println("File output path: " + filesPath); | |||||
| BufferedWriter writer = new BufferedWriter( | BufferedWriter writer = new BufferedWriter( | ||||
| new FileWriter("result_" + Long.toString(System.currentTimeMillis()))); | |||||
| new FileWriter(filesPath.toString())); | |||||
| writer.write(resultList); | writer.write(resultList); | ||||
| writer.close(); | writer.close(); | ||||
| } catch (IOException e) { | } catch (IOException e) { | ||||
| e.printStackTrace(); | e.printStackTrace(); | ||||
| @@ -96,13 +94,13 @@ public enum ThingProvider { | |||||
| return thingMetas; | return thingMetas; | ||||
| } | } | ||||
| @Inject | |||||
| @Optional | |||||
| private void subscribeTopicSourceChanged | |||||
| (@UIEventTopic(EventConstants.TOPIC_TAG_RESULT) | |||||
| String str) { | |||||
| System.out.println("Tag result now."); | |||||
| this.tagResult(); | |||||
| } | |||||
| // @Inject | |||||
| // @Optional | |||||
| // private void subscribeTopicTagResult | |||||
| // (@UIEventTopic(EventConstants.TOPIC_TAG_RESULT) | |||||
| // String empty) { | |||||
| // System.out.println("TOPIC_TAG_RESULT: Tag result now."); | |||||
| // this.tagResult(); | |||||
| // } | |||||
| } | } | ||||
| @@ -21,10 +21,10 @@ import org.eclipse.swt.events.SelectionAdapter; | |||||
| import org.eclipse.swt.events.SelectionEvent; | import org.eclipse.swt.events.SelectionEvent; | ||||
| import org.eclipse.swt.layout.GridData; | import org.eclipse.swt.layout.GridData; | ||||
| import org.eclipse.swt.layout.GridLayout; | import org.eclipse.swt.layout.GridLayout; | ||||
| import org.eclipse.swt.widgets.Button; | |||||
| import org.eclipse.swt.widgets.Combo; | import org.eclipse.swt.widgets.Combo; | ||||
| import org.eclipse.swt.widgets.Composite; | import org.eclipse.swt.widgets.Composite; | ||||
| import org.eclipse.swt.widgets.Label; | import org.eclipse.swt.widgets.Label; | ||||
| import org.eclipse.swt.widgets.Layout; | |||||
| import xyz.veronie.bgg.result.ResultConfigManager; | import xyz.veronie.bgg.result.ResultConfigManager; | ||||
| import xyz.veronie.bgg.types.EventConstants; | import xyz.veronie.bgg.types.EventConstants; | ||||
| @@ -46,13 +46,16 @@ public class BggUserSourceFilter { | |||||
| @Inject private IEventBroker eventBroker; | @Inject private IEventBroker eventBroker; | ||||
| @Inject private ResultConfigManager configManager; | @Inject private ResultConfigManager configManager; | ||||
| private Combo cbUserName; | |||||
| public void create(Composite parent, int style) { | public void create(Composite parent, int style) { | ||||
| GridLayout filterLayout = new GridLayout(5, false); | |||||
| parent.setLayout(filterLayout); | |||||
| Composite mainCompo = new Composite(parent, SWT.FILL); | |||||
| mainCompo.setLayout(new GridLayout(5, false)); | |||||
| mainCompo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); | |||||
| Label lblUser = new Label(parent, SWT.LEFT); | |||||
| Label lblUser = new Label(mainCompo, SWT.LEFT); | |||||
| lblUser.setText("User name: "); | lblUser.setText("User name: "); | ||||
| lblUser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | lblUser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | ||||
| @@ -69,7 +72,7 @@ public class BggUserSourceFilter { | |||||
| // e1.printStackTrace(); | // e1.printStackTrace(); | ||||
| // } | // } | ||||
| Combo cbUserName = new Combo(parent, SWT.DROP_DOWN); | |||||
| cbUserName = new Combo(mainCompo, SWT.DROP_DOWN); | |||||
| cbUserName.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | cbUserName.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | ||||
| cbUserName.setText(configManager.getResultConfig().user); | cbUserName.setText(configManager.getResultConfig().user); | ||||
| cbUserName.addSelectionListener(new SelectionAdapter() { | cbUserName.addSelectionListener(new SelectionAdapter() { | ||||
| @@ -90,6 +93,8 @@ public class BggUserSourceFilter { | |||||
| } | } | ||||
| }); | }); | ||||
| CommonControls.makeEmptySpace(mainCompo, 1); | |||||
| // Button btEditUsers = new Button(parent, SWT.PUSH); | // Button btEditUsers = new Button(parent, SWT.PUSH); | ||||
| // btEditUsers.setText("edit users"); | // btEditUsers.setText("edit users"); | ||||
| // btEditUsers.setEnabled(false); | // btEditUsers.setEnabled(false); | ||||
| @@ -97,14 +102,12 @@ public class BggUserSourceFilter { | |||||
| // btEditUsers.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | // btEditUsers.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | ||||
| // TODO: implement edit users | // TODO: implement edit users | ||||
| CommonControls.makeEmptySpace(parent, 1); | |||||
| // choose the thing sub-type | // choose the thing sub-type | ||||
| Label lblSubtype = new Label(parent, SWT.LEFT); | |||||
| Label lblSubtype = new Label(mainCompo, SWT.LEFT); | |||||
| lblSubtype.setText("Subtypes: "); | lblSubtype.setText("Subtypes: "); | ||||
| lblSubtype.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, false)); | lblSubtype.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, false)); | ||||
| ComboViewer cbSubtypes = new ComboViewer(parent, SWT.READ_ONLY); | |||||
| ComboViewer cbSubtypes = new ComboViewer(mainCompo, SWT.READ_ONLY); | |||||
| cbSubtypes.getCombo().setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | cbSubtypes.getCombo().setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | ||||
| cbSubtypes.setContentProvider(ArrayContentProvider.getInstance()); | cbSubtypes.setContentProvider(ArrayContentProvider.getInstance()); | ||||
| List<Subtype> subtypes = new ArrayList<Subtype>(); | List<Subtype> subtypes = new ArrayList<Subtype>(); | ||||
| @@ -123,37 +126,42 @@ public class BggUserSourceFilter { | |||||
| Label infoLabel = new Label(parent, SWT.LEFT); | |||||
| Composite flagsComposite = new Composite(mainCompo, SWT.FILL); | |||||
| GridLayout layout = new GridLayout(4,false); | |||||
| GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, false); | |||||
| gridData.horizontalSpan = 5; | |||||
| flagsComposite.setLayoutData(gridData); | |||||
| layout.horizontalSpacing = 15; | |||||
| flagsComposite.setLayout(layout); | |||||
| Label infoLabel = new Label(flagsComposite, SWT.LEFT); | |||||
| infoLabel.setText("Select which flags are used as filter. Filters follow 'AND' rule."); | infoLabel.setText("Select which flags are used as filter. Filters follow 'AND' rule."); | ||||
| GridData gdInfo = new GridData(SWT.FILL, SWT.FILL, true, false); | GridData gdInfo = new GridData(SWT.FILL, SWT.FILL, true, false); | ||||
| gdInfo.horizontalSpan = 5; | |||||
| gdInfo.horizontalSpan = 4; | |||||
| infoLabel.setLayoutData(gdInfo); | infoLabel.setLayoutData(gdInfo); | ||||
| makeFilter(parent, UserFlag.OWN); | |||||
| makeFilter(parent, UserFlag.WTP); | |||||
| CommonControls.makeEmptySpace(parent, 1); | |||||
| makeFilter(flagsComposite, UserFlag.OWN); | |||||
| makeFilter(flagsComposite, UserFlag.WTP); | |||||
| makeFilter(parent, UserFlag.PREVIOUSLY_OWNED); | |||||
| makeFilter(parent, UserFlag.WTB); | |||||
| CommonControls.makeEmptySpace(parent, 1); | |||||
| makeFilter(flagsComposite, UserFlag.PREVIOUSLY_OWNED); | |||||
| makeFilter(flagsComposite, UserFlag.WTB); | |||||
| makeFilter(parent, UserFlag.TRADE); | |||||
| makeFilter(parent, UserFlag.WISHLIST); | |||||
| CommonControls.makeEmptySpace(parent, 1); | |||||
| makeFilter(flagsComposite, UserFlag.TRADE); | |||||
| makeFilter(flagsComposite, UserFlag.WISHLIST); | |||||
| makeFilter(parent, UserFlag.WANT); | |||||
| makeFilter(parent, UserFlag.PREORDERED); | |||||
| CommonControls.makeEmptySpace(parent, 1); | |||||
| makeFilter(flagsComposite, UserFlag.WANT); | |||||
| makeFilter(flagsComposite, UserFlag.PREORDERED); | |||||
| makeFilter(parent, UserFlag.RATED); | |||||
| makeFilter(parent, UserFlag.COMMENT); | |||||
| CommonControls.makeEmptySpace(parent, 1); | |||||
| makeFilter(flagsComposite, UserFlag.RATED); | |||||
| makeFilter(flagsComposite, UserFlag.COMMENT); | |||||
| makeFilter(parent, UserFlag.PLAYED); | |||||
| makeFilter(flagsComposite, UserFlag.PLAYED); | |||||
| parent.pack(); | |||||
| parent.getParent().pack(); | |||||
| parent.layout(); | |||||
| // flagsComposite.pack(); | |||||
| // flagsComposite.getParent().pack(); | |||||
| // flagsComposite.layout(); | |||||
| mainCompo.pack(); | |||||
| mainCompo.layout(true, true); | |||||
| } | } | ||||
| @@ -161,7 +169,7 @@ public class BggUserSourceFilter { | |||||
| // Filters are tri-state: include iff has flag, include iff it does not have the flag, | // Filters are tri-state: include iff has flag, include iff it does not have the flag, | ||||
| // don't care if it has that flag. | // don't care if it has that flag. | ||||
| // TODO: create a three-way toggle button instead. | // TODO: create a three-way toggle button instead. | ||||
| private void makeFilter(Composite parent, UserFlag key) { | |||||
| private void makeFilter(Composite parent, final UserFlag key) { | |||||
| ComboViewer filterCombo = new ComboViewer(parent, SWT.READ_ONLY); | ComboViewer filterCombo = new ComboViewer(parent, SWT.READ_ONLY); | ||||
| filterCombo.setContentProvider(ArrayContentProvider.getInstance()); | filterCombo.setContentProvider(ArrayContentProvider.getInstance()); | ||||
| @@ -9,7 +9,6 @@ import org.eclipse.e4.core.di.annotations.Creatable; | |||||
| import org.eclipse.e4.core.di.annotations.Optional; | import org.eclipse.e4.core.di.annotations.Optional; | ||||
| import org.eclipse.e4.core.services.events.IEventBroker; | import org.eclipse.e4.core.services.events.IEventBroker; | ||||
| import org.eclipse.e4.ui.di.UIEventTopic; | import org.eclipse.e4.ui.di.UIEventTopic; | ||||
| import org.eclipse.jface.dialogs.MessageDialog; | |||||
| import org.eclipse.jface.viewers.ArrayContentProvider; | import org.eclipse.jface.viewers.ArrayContentProvider; | ||||
| import org.eclipse.jface.viewers.ComboViewer; | import org.eclipse.jface.viewers.ComboViewer; | ||||
| import org.eclipse.jface.viewers.ISelectionChangedListener; | import org.eclipse.jface.viewers.ISelectionChangedListener; | ||||
| @@ -39,6 +38,7 @@ public class FamilySourceFilter { | |||||
| @Inject private IEventBroker eventBroker; | @Inject private IEventBroker eventBroker; | ||||
| @Inject private ResultConfigManager configManager; | @Inject private ResultConfigManager configManager; | ||||
| private StyledText confLabel; | private StyledText confLabel; | ||||
| private Combo cbFamilyId; | |||||
| public void create(Composite parent, int style) { | public void create(Composite parent, int style) { | ||||
| GridLayout filterLayout = new GridLayout(2, false); | GridLayout filterLayout = new GridLayout(2, false); | ||||
| @@ -48,7 +48,7 @@ public class FamilySourceFilter { | |||||
| lblFamily.setText("Family ID: "); | lblFamily.setText("Family ID: "); | ||||
| lblFamily.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | lblFamily.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | ||||
| Combo cbFamilyId = new Combo(parent, SWT.DROP_DOWN); | |||||
| cbFamilyId = new Combo(parent, SWT.DROP_DOWN); | |||||
| cbFamilyId.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | cbFamilyId.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | ||||
| Integer fid = configManager.getResultConfig().familyId; | Integer fid = configManager.getResultConfig().familyId; | ||||
| @@ -63,7 +63,7 @@ public class FamilySourceFilter { | |||||
| System.out.println("set family id to '" + configManager.getResultConfig().familyId + "'"); | System.out.println("set family id to '" + configManager.getResultConfig().familyId + "'"); | ||||
| } | } | ||||
| catch (NumberFormatException ex) { | catch (NumberFormatException ex) { | ||||
| MessageDialog.openError(parent.getShell(), "Input error", "FamilyId must be a whole number."); | |||||
| eventBroker.send(EventConstants.TOPIC_STATUS, "[ERROR] GeeklistId must be a whole number."); | |||||
| } | } | ||||
| System.out.println("set family id to '" + configManager.getResultConfig().familyId + "'"); | System.out.println("set family id to '" + configManager.getResultConfig().familyId + "'"); | ||||
| } | } | ||||
| @@ -77,7 +77,7 @@ public class FamilySourceFilter { | |||||
| System.out.println("set family id to '" + configManager.getResultConfig().geeklistId + "'"); | System.out.println("set family id to '" + configManager.getResultConfig().geeklistId + "'"); | ||||
| } | } | ||||
| catch (NumberFormatException ex) { | catch (NumberFormatException ex) { | ||||
| MessageDialog.openError(parent.getShell(), "Input error", "FamilyId must be a whole number."); | |||||
| eventBroker.send(EventConstants.TOPIC_STATUS, "[ERROR] GeeklistId must be a whole number."); | |||||
| } | } | ||||
| System.out.println("set family id to '" + configManager.getResultConfig().familyId + "'"); | System.out.println("set family id to '" + configManager.getResultConfig().familyId + "'"); | ||||
| } | } | ||||
| @@ -6,7 +6,6 @@ import org.eclipse.e4.core.di.annotations.Creatable; | |||||
| import org.eclipse.e4.core.di.annotations.Optional; | import org.eclipse.e4.core.di.annotations.Optional; | ||||
| import org.eclipse.e4.core.services.events.IEventBroker; | import org.eclipse.e4.core.services.events.IEventBroker; | ||||
| import org.eclipse.e4.ui.di.UIEventTopic; | import org.eclipse.e4.ui.di.UIEventTopic; | ||||
| import org.eclipse.jface.dialogs.MessageDialog; | |||||
| import org.eclipse.swt.SWT; | import org.eclipse.swt.SWT; | ||||
| import org.eclipse.swt.custom.StyledText; | import org.eclipse.swt.custom.StyledText; | ||||
| import org.eclipse.swt.events.FocusEvent; | import org.eclipse.swt.events.FocusEvent; | ||||
| @@ -30,6 +29,7 @@ public class GeeklistSourceFilter { | |||||
| @Inject private ResultConfigManager configManager; | @Inject private ResultConfigManager configManager; | ||||
| private StyledText confLabel; | private StyledText confLabel; | ||||
| private Combo cbGeeklistId; | |||||
| public void create(Composite parent, int style) { | public void create(Composite parent, int style) { | ||||
| GridLayout filterLayout = new GridLayout(2, false); | GridLayout filterLayout = new GridLayout(2, false); | ||||
| @@ -39,7 +39,7 @@ public class GeeklistSourceFilter { | |||||
| lblGeeklist.setText("Geeklist ID: "); | lblGeeklist.setText("Geeklist ID: "); | ||||
| lblGeeklist.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | lblGeeklist.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | ||||
| Combo cbGeeklistId = new Combo(parent, SWT.DROP_DOWN); | |||||
| cbGeeklistId = new Combo(parent, SWT.DROP_DOWN); | |||||
| Integer gid = configManager.getResultConfig().geeklistId; | Integer gid = configManager.getResultConfig().geeklistId; | ||||
| if(gid != null) { | if(gid != null) { | ||||
| cbGeeklistId.setText(Integer.toString(gid)); | cbGeeklistId.setText(Integer.toString(gid)); | ||||
| @@ -52,7 +52,7 @@ public class GeeklistSourceFilter { | |||||
| System.out.println("set geeklist id to '" + configManager.getResultConfig().geeklistId + "'"); | System.out.println("set geeklist id to '" + configManager.getResultConfig().geeklistId + "'"); | ||||
| } | } | ||||
| catch (NumberFormatException ex) { | catch (NumberFormatException ex) { | ||||
| MessageDialog.openError(parent.getShell(), "Input error", "GeeklistId must be a whole number."); | |||||
| eventBroker.send(EventConstants.TOPIC_STATUS, "[ERROR] GeeklistId must be a whole number."); | |||||
| } | } | ||||
| } | } | ||||
| }); | }); | ||||
| @@ -65,7 +65,7 @@ public class GeeklistSourceFilter { | |||||
| System.out.println("set geeklist id to '" + configManager.getResultConfig().geeklistId + "'"); | System.out.println("set geeklist id to '" + configManager.getResultConfig().geeklistId + "'"); | ||||
| } | } | ||||
| catch (NumberFormatException ex) { | catch (NumberFormatException ex) { | ||||
| MessageDialog.openError(parent.getShell(), "Input error", "GeeklistId must be a whole number."); | |||||
| eventBroker.send(EventConstants.TOPIC_STATUS, "[ERROR] GeeklistId must be a whole number."); | |||||
| } | } | ||||
| } | } | ||||
| @@ -0,0 +1,23 @@ | |||||
| package xyz.veronie.bgg.ui.handlers; | |||||
| import org.eclipse.e4.core.di.annotations.CanExecute; | |||||
| import org.eclipse.e4.core.di.annotations.Execute; | |||||
| import xyz.veronie.bgg.result.ThingProvider; | |||||
| public class HandleSaveGamelist { | |||||
| @Execute | |||||
| public void execute() { | |||||
| ThingProvider.INSTANCE.tagResult(); | |||||
| } | |||||
| @CanExecute | |||||
| public boolean canExecute() { | |||||
| // TODO | |||||
| return true; | |||||
| } | |||||
| } | |||||
| @@ -13,6 +13,8 @@ import org.eclipse.jface.viewers.ColumnLabelProvider; | |||||
| import org.eclipse.jface.viewers.TableViewer; | import org.eclipse.jface.viewers.TableViewer; | ||||
| import org.eclipse.jface.viewers.TableViewerColumn; | import org.eclipse.jface.viewers.TableViewerColumn; | ||||
| import org.eclipse.swt.SWT; | import org.eclipse.swt.SWT; | ||||
| import org.eclipse.swt.events.SelectionAdapter; | |||||
| import org.eclipse.swt.events.SelectionEvent; | |||||
| import org.eclipse.swt.layout.GridData; | import org.eclipse.swt.layout.GridData; | ||||
| import org.eclipse.swt.layout.GridLayout; | import org.eclipse.swt.layout.GridLayout; | ||||
| import org.eclipse.swt.widgets.Button; | import org.eclipse.swt.widgets.Button; | ||||
| @@ -29,8 +31,6 @@ public class BggResultPart { | |||||
| private TableViewer viewer; | private TableViewer viewer; | ||||
| private Label statsLabel; | private Label statsLabel; | ||||
| @Inject private IEventBroker eventBroker; | |||||
| @PostConstruct | @PostConstruct | ||||
| public void createControls(Composite parent) { | public void createControls(Composite parent) { | ||||
| Composite main = new Composite(parent, SWT.FILL); | Composite main = new Composite(parent, SWT.FILL); | ||||
| @@ -42,14 +42,12 @@ public class BggResultPart { | |||||
| createViewer(main); | createViewer(main); | ||||
| statsLabel = new Label(main, SWT.FILL); | statsLabel = new Label(main, SWT.FILL); | ||||
| statsLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | |||||
| statsLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); | |||||
| statsLabel.setText("0 items"); | statsLabel.setText("0 items"); | ||||
| Button tagResultButton = new Button(main, SWT.PUSH); | |||||
| tagResultButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | |||||
| tagResultButton.addListener(SWT.SELECTED, event -> { | |||||
| eventBroker.post(EventConstants.TOPIC_TAG_RESULT, ""); | |||||
| }); | |||||
| } | } | ||||
| @@ -0,0 +1,225 @@ | |||||
| package xyz.veronie.bgg.ui.parts; | |||||
| import javax.annotation.PostConstruct; | |||||
| import org.eclipse.core.runtime.IProgressMonitor; | |||||
| import org.eclipse.core.runtime.jobs.Job; | |||||
| import org.eclipse.core.runtime.jobs.ProgressProvider; | |||||
| import org.eclipse.jface.viewers.ComboViewer; | |||||
| import org.eclipse.swt.SWT; | |||||
| import org.eclipse.swt.events.SelectionAdapter; | |||||
| import org.eclipse.swt.events.SelectionEvent; | |||||
| import org.eclipse.swt.layout.GridData; | |||||
| import org.eclipse.swt.layout.GridLayout; | |||||
| import org.eclipse.swt.widgets.Button; | |||||
| import org.eclipse.swt.widgets.Composite; | |||||
| import org.eclipse.swt.widgets.Group; | |||||
| import org.eclipse.swt.widgets.Label; | |||||
| import org.eclipse.swt.widgets.ProgressBar; | |||||
| import xyz.veronie.bgg.ui.helpers.CommonControls; | |||||
| import xyz.veronie.bgg.ui.result.DownloadProgressMonitor; | |||||
| public class DownloadThingDetailsPart { | |||||
| private DownloadProgressMonitor monitor; | |||||
| private Button extendedInfoCheck; | |||||
| private Button downloadAllPlaysCheck; | |||||
| @PostConstruct | |||||
| public void createControls(Composite parent) { | |||||
| Composite main = new Composite(parent, SWT.FILL); | |||||
| main.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | |||||
| GridLayout layout = new GridLayout(2, false); | |||||
| main.setLayout(layout); | |||||
| Composite loadGamesComposite = new Composite(main, SWT.FILL); | |||||
| loadGamesComposite.setLayout(new GridLayout(1, false)); | |||||
| loadGamesComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); | |||||
| loadGamesComposite.setBackground(main.getDisplay().getSystemColor(SWT.COLOR_WHITE)); | |||||
| createLoadGamesControls(loadGamesComposite); | |||||
| Composite loadOptionsComposite = new Composite(main, SWT.FILL); | |||||
| loadOptionsComposite.setLayout(new GridLayout(1, false)); | |||||
| loadOptionsComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); | |||||
| loadOptionsComposite.setBackground(main.getDisplay().getSystemColor(SWT.COLOR_WHITE)); | |||||
| createLoadOptionsControls(loadOptionsComposite); | |||||
| Composite runNanDeckComposite = new Composite(main, SWT.FILL); | |||||
| runNanDeckComposite.setLayout(new GridLayout(1, false)); | |||||
| runNanDeckComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); | |||||
| runNanDeckComposite.setBackground(main.getDisplay().getSystemColor(SWT.COLOR_WHITE)); | |||||
| createRunNanDeckControls(runNanDeckComposite); | |||||
| Composite nanDeckOptionsComposite = new Composite(main, SWT.FILL); | |||||
| nanDeckOptionsComposite.setLayout(new GridLayout(1, false)); | |||||
| nanDeckOptionsComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); | |||||
| nanDeckOptionsComposite.setBackground(main.getDisplay().getSystemColor(SWT.COLOR_WHITE)); | |||||
| createNandeckOptionsControl(nanDeckOptionsComposite); | |||||
| } | |||||
| private void createNandeckOptionsControl(Composite compo) { | |||||
| // Combo with ("Wait for user input", "Create PDF", "Print on default printer", "Save BMP images", | |||||
| // "Save JPG images", "Save PNG images", Save GIF images", "Save GIFa images"); | |||||
| } | |||||
| private void createLoadOptionsControls(Composite compo) { | |||||
| Group optionsGroup = new Group(compo, SWT.SHADOW_ETCHED_IN); | |||||
| GridLayout layout = new GridLayout(3, false); | |||||
| layout.horizontalSpacing = 15; | |||||
| optionsGroup.setLayout(layout); | |||||
| optionsGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); | |||||
| optionsGroup.setText("Download options"); | |||||
| Label gamesLbl = new Label(optionsGroup, SWT.LEFT); | |||||
| gamesLbl.setText("Games"); | |||||
| ComboViewer gamesCombo = new ComboViewer(optionsGroup); | |||||
| CommonControls.makeEmptySpace(optionsGroup, 1); | |||||
| Label resolutionLbl = new Label(optionsGroup, SWT.LEFT); | |||||
| resolutionLbl.setText("Resolution"); | |||||
| ComboViewer resolutionCombo = new ComboViewer(optionsGroup); | |||||
| CommonControls.makeEmptySpace(optionsGroup, 1); | |||||
| Label imagesLbl = new Label(optionsGroup, SWT.LEFT); | |||||
| imagesLbl.setText("Images"); | |||||
| ComboViewer imagesCombo = new ComboViewer(optionsGroup); | |||||
| CommonControls.makeEmptySpace(optionsGroup, 1); | |||||
| Button onlyNewCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| onlyNewCheck.setText("Only new"); | |||||
| Button usePersNamesCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| usePersNamesCheck.setText("Use pers. names"); | |||||
| usePersNamesCheck.setEnabled(false); | |||||
| Button only1DesignerCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| only1DesignerCheck.setText("Only one designer"); | |||||
| only1DesignerCheck.setEnabled(false); | |||||
| Button withDescCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| withDescCheck.setText("With description"); | |||||
| Button usePersImagesCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| usePersImagesCheck.setText("Use pers. images"); | |||||
| usePersImagesCheck.setEnabled(false); | |||||
| Button only1PublisherCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| only1PublisherCheck.setText("Only one publisher"); | |||||
| only1PublisherCheck.setEnabled(false); | |||||
| Button limitDescCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| limitDescCheck.setText("Limit description"); | |||||
| Button useRecBestInfoCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| useRecBestInfoCheck.setText("Use rec./best info"); | |||||
| useRecBestInfoCheck.setEnabled(false); | |||||
| Button only1ArtistCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| only1ArtistCheck.setText("Only one artist"); | |||||
| only1ArtistCheck.setEnabled(false); | |||||
| Button downloadVotesCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| downloadVotesCheck.setText("Download votes"); | |||||
| downloadVotesCheck.setEnabled(false); | |||||
| downloadVotesCheck.addSelectionListener(new SelectionAdapter() { | |||||
| @Override | |||||
| public void widgetSelected(SelectionEvent e) { | |||||
| extendedInfoCheck.setEnabled(true); | |||||
| } | |||||
| }); | |||||
| Button brnDetailCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| brnDetailCheck.setText("B/R/N detail"); | |||||
| brnDetailCheck.setEnabled(false); | |||||
| Button reloadDataCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| reloadDataCheck.setText("Reload data"); | |||||
| reloadDataCheck.setEnabled(false); | |||||
| extendedInfoCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| extendedInfoCheck.setText(" Extended info"); | |||||
| extendedInfoCheck.setEnabled(false); // enabled when download votes is checked | |||||
| Button downloadPlaysCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| downloadPlaysCheck.setText("Download plays"); | |||||
| downloadPlaysCheck.setEnabled(false); | |||||
| downloadPlaysCheck.addSelectionListener(new SelectionAdapter() { | |||||
| @Override | |||||
| public void widgetSelected(SelectionEvent e) { | |||||
| downloadAllPlaysCheck.setEnabled(true); | |||||
| } | |||||
| }); | |||||
| Button reloadImagesCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| reloadImagesCheck.setText("Reload images"); | |||||
| reloadImagesCheck.setEnabled(false); | |||||
| Button downloadLangCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| downloadLangCheck.setText("Download lang."); | |||||
| downloadLangCheck.setEnabled(false); | |||||
| downloadAllPlaysCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| downloadAllPlaysCheck.setText(" Download plays (all)"); | |||||
| downloadAllPlaysCheck.setEnabled(false); // enabled when download plays checked | |||||
| Button ReloadQRCodesCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| ReloadQRCodesCheck.setText("Reload QR codes"); | |||||
| ReloadQRCodesCheck.setEnabled(false); | |||||
| Button namesImgCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| namesImgCheck.setText("Names in images"); | |||||
| namesImgCheck.setEnabled(false); | |||||
| Button useQrCodesCheck = new Button(optionsGroup, SWT.CHECK); | |||||
| useQrCodesCheck.setText("Use QR codes"); | |||||
| useQrCodesCheck.setEnabled(false); | |||||
| } | |||||
| private void createRunNanDeckControls(Composite compo) { | |||||
| Button runNandeckBtn = new Button(compo, SWT.LEFT); | |||||
| runNandeckBtn.setText("Run nanDeck"); | |||||
| runNandeckBtn.addSelectionListener(new SelectionAdapter() { | |||||
| }); | |||||
| } | |||||
| private void createLoadGamesControls(Composite compo) { | |||||
| Button loadGamesBtn = new Button(compo, SWT.LEFT); | |||||
| loadGamesBtn.setText("Load games"); | |||||
| loadGamesBtn.addSelectionListener(new SelectionAdapter() { | |||||
| }); | |||||
| ProgressBar progressBar = new ProgressBar(compo, SWT.SMOOTH); | |||||
| progressBar.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); | |||||
| monitor = new DownloadProgressMonitor(); | |||||
| Job.getJobManager().setProgressProvider(new ProgressProvider() { | |||||
| @Override | |||||
| public IProgressMonitor createMonitor(Job job) { | |||||
| return monitor.addJob(job); | |||||
| } | |||||
| }); | |||||
| } | |||||
| } | |||||
| @@ -1,22 +0,0 @@ | |||||
| package xyz.veronie.bgg.ui.parts; | |||||
| import javax.annotation.PostConstruct; | |||||
| import org.eclipse.swt.SWT; | |||||
| import org.eclipse.swt.layout.GridData; | |||||
| import org.eclipse.swt.layout.GridLayout; | |||||
| import org.eclipse.swt.widgets.Composite; | |||||
| public class LoadThingDetailsPart { | |||||
| @PostConstruct | |||||
| public void createControls(Composite parent) { | |||||
| Composite main = new Composite(parent, SWT.FILL); | |||||
| main.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | |||||
| GridLayout layout = new GridLayout(5, false); | |||||
| main.setLayout(layout); | |||||
| } | |||||
| } | |||||
| @@ -7,6 +7,7 @@ import javax.annotation.PostConstruct; | |||||
| import javax.inject.Inject; | import javax.inject.Inject; | ||||
| import org.eclipse.e4.core.services.events.IEventBroker; | import org.eclipse.e4.core.services.events.IEventBroker; | ||||
| import org.eclipse.e4.ui.workbench.modeling.EPartService; | |||||
| import org.eclipse.jface.dialogs.MessageDialog; | import org.eclipse.jface.dialogs.MessageDialog; | ||||
| import org.eclipse.jface.viewers.ArrayContentProvider; | import org.eclipse.jface.viewers.ArrayContentProvider; | ||||
| import org.eclipse.jface.viewers.ComboViewer; | import org.eclipse.jface.viewers.ComboViewer; | ||||
| @@ -34,7 +35,6 @@ import xyz.veronie.bgg.result.ThingProvider; | |||||
| import xyz.veronie.bgg.types.EventConstants; | import xyz.veronie.bgg.types.EventConstants; | ||||
| import xyz.veronie.bgg.types.ResultAction; | import xyz.veronie.bgg.types.ResultAction; | ||||
| import xyz.veronie.bgg.types.SourceFilter; | import xyz.veronie.bgg.types.SourceFilter; | ||||
| import xyz.veronie.bgg.types.Subtype; | |||||
| import xyz.veronie.bgg.ui.filters.AgeSourceFilter; | import xyz.veronie.bgg.ui.filters.AgeSourceFilter; | ||||
| import xyz.veronie.bgg.ui.filters.BggUserSourceFilter; | import xyz.veronie.bgg.ui.filters.BggUserSourceFilter; | ||||
| import xyz.veronie.bgg.ui.filters.FamilySourceFilter; | import xyz.veronie.bgg.ui.filters.FamilySourceFilter; | ||||
| @@ -48,7 +48,10 @@ import xyz.veronie.bgg.ui.helpers.CommonControls; | |||||
| /// Has controls to download a list of thing IDs (+some meta info) from BGG. | /// Has controls to download a list of thing IDs (+some meta info) from BGG. | ||||
| /// There are different ways to configure which IDs to retrieve. | /// There are different ways to configure which IDs to retrieve. | ||||
| public class LoadFromBggPart { | |||||
| public class PreparePart { | |||||
| @Inject | |||||
| EPartService partService; | |||||
| @Inject | @Inject | ||||
| private ResultConfigManager configManager; | private ResultConfigManager configManager; | ||||
| @@ -64,15 +67,14 @@ public class LoadFromBggPart { | |||||
| @Inject private YearSourceFilter yearSourceFilter; | @Inject private YearSourceFilter yearSourceFilter; | ||||
| @Inject private SearchSourceFilter searchSourceFilter; | @Inject private SearchSourceFilter searchSourceFilter; | ||||
| @Inject private BggApi bggApi; | @Inject private BggApi bggApi; | ||||
| private Composite mainComposite; | |||||
| @PostConstruct | @PostConstruct | ||||
| public void createControls(Composite parent) { | public void createControls(Composite parent) { | ||||
| Composite main = new Composite(parent, SWT.FILL); | |||||
| main.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | |||||
| GridLayout layout = new GridLayout(5, false); | |||||
| main.setLayout(layout); | |||||
| mainComposite = new Composite(parent, SWT.FILL); | |||||
| mainComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); | |||||
| mainComposite.setLayout(new GridLayout(1, false)); | |||||
| // // contains configuration options for download of the bgg thing ID list | // // contains configuration options for download of the bgg thing ID list | ||||
| // Group dlConfigGroup = new Group(main, SWT.SHADOW_ETCHED_IN); | // Group dlConfigGroup = new Group(main, SWT.SHADOW_ETCHED_IN); | ||||
| @@ -82,12 +84,15 @@ public class LoadFromBggPart { | |||||
| // GridLayout layoutG = new GridLayout(2, false); | // GridLayout layoutG = new GridLayout(2, false); | ||||
| // dlConfigGroup.setLayout(layoutG); | // dlConfigGroup.setLayout(layoutG); | ||||
| Label lblSource = new Label(main, SWT.LEFT); | |||||
| Composite sourceSelectCompo = new Composite(mainComposite, SWT.FILL); | |||||
| sourceSelectCompo.setLayout(new GridLayout(2, false)); | |||||
| Label lblSource = new Label(sourceSelectCompo, SWT.LEFT); | |||||
| lblSource.setText("Source: "); | lblSource.setText("Source: "); | ||||
| lblSource.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, false)); | lblSource.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, false)); | ||||
| // choose the bgg data source | // choose the bgg data source | ||||
| ComboViewer cbSource = new ComboViewer(main, SWT.READ_ONLY); | |||||
| ComboViewer cbSource = new ComboViewer(sourceSelectCompo, SWT.READ_ONLY); | |||||
| cbSource.getCombo().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); | cbSource.getCombo().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); | ||||
| cbSource.setContentProvider(ArrayContentProvider.getInstance()); | cbSource.setContentProvider(ArrayContentProvider.getInstance()); | ||||
| List<SourceFilter> sources = new ArrayList<SourceFilter>(); | List<SourceFilter> sources = new ArrayList<SourceFilter>(); | ||||
| @@ -99,20 +104,14 @@ public class LoadFromBggPart { | |||||
| cbSource.setSelection(new StructuredSelection(configManager.getResultConfig().source)); | cbSource.setSelection(new StructuredSelection(configManager.getResultConfig().source)); | ||||
| // listener is configured further below | // listener is configured further below | ||||
| CommonControls.makeEmptySpace(main, 3); | |||||
| CommonControls.makeEmptySpace(mainComposite, 2); | |||||
| // area to display filter controls | |||||
| // next row: | |||||
| // area to display filter controls in | |||||
| Group gFilters = new Group(main, SWT.SHADOW_ETCHED_IN); | |||||
| Group gFilters = new Group(mainComposite, SWT.SHADOW_ETCHED_IN); | |||||
| gFilters.setText(""); | gFilters.setText(""); | ||||
| GridData gdf = new GridData(SWT.FILL, SWT.FILL, false, false); | |||||
| gdf.horizontalSpan = 5; | |||||
| gFilters.setLayoutData(gdf); | |||||
| gFilters.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); | |||||
| showFilter(gFilters, (IStructuredSelection)cbSource.getSelection()); // set content to initial selection | showFilter(gFilters, (IStructuredSelection)cbSource.getSelection()); // set content to initial selection | ||||
| cbSource.addSelectionChangedListener(new ISelectionChangedListener() { // later, its content will be set via the dropdown | cbSource.addSelectionChangedListener(new ISelectionChangedListener() { // later, its content will be set via the dropdown | ||||
| @@ -127,16 +126,14 @@ public class LoadFromBggPart { | |||||
| }); | }); | ||||
| // next row: | |||||
| CommonControls.makeEmptySpace(main, 5); | |||||
| // next row | // next row | ||||
| Composite fetchCompo = new Composite(mainComposite, SWT.FILL); | |||||
| fetchCompo.setLayout(new GridLayout(4, false)); | |||||
| // choose action on result list | // choose action on result list | ||||
| Button btDownload = new Button(main, SWT.PUSH); | |||||
| Button btDownload = new Button(fetchCompo, SWT.PUSH); | |||||
| GridData gd = new GridData(SWT.LEFT, SWT.FILL, false, false); | GridData gd = new GridData(SWT.LEFT, SWT.FILL, false, false); | ||||
| gd.horizontalSpan = 2; | |||||
| btDownload.setLayoutData(gd); | btDownload.setLayoutData(gd); | ||||
| btDownload.setText("Fetch"); | btDownload.setText("Fetch"); | ||||
| btDownload.addSelectionListener(new SelectionAdapter() { | btDownload.addSelectionListener(new SelectionAdapter() { | ||||
| @@ -150,7 +147,7 @@ public class LoadFromBggPart { | |||||
| if(selection.getFirstElement() == SourceFilter.BGG_USER) { | if(selection.getFirstElement() == SourceFilter.BGG_USER) { | ||||
| String user = resultConfig.user; | String user = resultConfig.user; | ||||
| if(user == null || user.isEmpty()) { | if(user == null || user.isEmpty()) { | ||||
| MessageDialog.openError(main.getShell(), "", "Please enter a user name."); | |||||
| MessageDialog.openError(mainComposite.getShell(), "", "Please enter a user name."); | |||||
| return; | return; | ||||
| } else { | } else { | ||||
| eventBroker.send(EventConstants.TOPIC_STATUS, "Fetching " + selection.getFirstElement().toString() + " '" + user + "'..."); | eventBroker.send(EventConstants.TOPIC_STATUS, "Fetching " + selection.getFirstElement().toString() + " '" + user + "'..."); | ||||
| @@ -159,14 +156,14 @@ public class LoadFromBggPart { | |||||
| useThingsOnResult(thingMetas); | useThingsOnResult(thingMetas); | ||||
| } | } | ||||
| catch(IllegalArgumentException ex) { | catch(IllegalArgumentException ex) { | ||||
| MessageDialog.openError(main.getShell(), "", ex.getMessage()); | |||||
| MessageDialog.openError(mainComposite.getShell(), "", ex.getMessage()); | |||||
| } | } | ||||
| } | } | ||||
| } else if(selection.getFirstElement() == SourceFilter.GEEKLIST) { | } else if(selection.getFirstElement() == SourceFilter.GEEKLIST) { | ||||
| Integer geeklistId = resultConfig.geeklistId; | Integer geeklistId = resultConfig.geeklistId; | ||||
| if(geeklistId == null) { | if(geeklistId == null) { | ||||
| MessageDialog.openError(main.getShell(), "", "Please enter a geeklist id."); | |||||
| MessageDialog.openError(mainComposite.getShell(), "", "Please enter a geeklist id."); | |||||
| return; | return; | ||||
| } else { | } else { | ||||
| eventBroker.send(EventConstants.TOPIC_STATUS, "Fetching for geeklist id '" + geeklistId + "'"); | eventBroker.send(EventConstants.TOPIC_STATUS, "Fetching for geeklist id '" + geeklistId + "'"); | ||||
| @@ -175,13 +172,13 @@ public class LoadFromBggPart { | |||||
| useThingsOnResult(thingMetas); | useThingsOnResult(thingMetas); | ||||
| } | } | ||||
| catch(IllegalArgumentException ex) { | catch(IllegalArgumentException ex) { | ||||
| MessageDialog.openError(main.getShell(), "", ex.getMessage()); | |||||
| MessageDialog.openError(mainComposite.getShell(), "", ex.getMessage()); | |||||
| } | } | ||||
| } | } | ||||
| } else if(selection.getFirstElement() == SourceFilter.FAMILY) { | } else if(selection.getFirstElement() == SourceFilter.FAMILY) { | ||||
| Integer familyId = resultConfig.familyId; | Integer familyId = resultConfig.familyId; | ||||
| if(familyId == null) { | if(familyId == null) { | ||||
| MessageDialog.openError(main.getShell(), "", "Please enter a family id."); | |||||
| MessageDialog.openError(mainComposite.getShell(), "", "Please enter a family id."); | |||||
| return; | return; | ||||
| } else { | } else { | ||||
| eventBroker.send(EventConstants.TOPIC_STATUS, "Fetching for family id '" + familyId + "'"); | eventBroker.send(EventConstants.TOPIC_STATUS, "Fetching for family id '" + familyId + "'"); | ||||
| @@ -190,7 +187,7 @@ public class LoadFromBggPart { | |||||
| useThingsOnResult(thingMetas); | useThingsOnResult(thingMetas); | ||||
| } | } | ||||
| catch(IllegalArgumentException ex) { | catch(IllegalArgumentException ex) { | ||||
| MessageDialog.openError(main.getShell(), "", ex.getMessage()); | |||||
| MessageDialog.openError(mainComposite.getShell(), "", ex.getMessage()); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -217,11 +214,11 @@ public class LoadFromBggPart { | |||||
| }); | }); | ||||
| Label lblAct = new Label(main, SWT.LEFT); | |||||
| Label lblAct = new Label(fetchCompo, SWT.LEFT); | |||||
| lblAct.setText("and"); | lblAct.setText("and"); | ||||
| lblAct.setLayoutData(new GridData(SWT.CENTER, SWT.FILL, false, false)); | lblAct.setLayoutData(new GridData(SWT.CENTER, SWT.FILL, false, false)); | ||||
| ComboViewer cbAct = new ComboViewer(main, SWT.READ_ONLY); | |||||
| ComboViewer cbAct = new ComboViewer(fetchCompo, SWT.READ_ONLY); | |||||
| GridData gdact = new GridData(SWT.FILL, SWT.FILL, false, false); | GridData gdact = new GridData(SWT.FILL, SWT.FILL, false, false); | ||||
| cbAct.getCombo().setLayoutData(gdact); | cbAct.getCombo().setLayoutData(gdact); | ||||
| cbAct.setContentProvider(ArrayContentProvider.getInstance()); | cbAct.setContentProvider(ArrayContentProvider.getInstance()); | ||||
| @@ -240,29 +237,18 @@ public class LoadFromBggPart { | |||||
| }); | }); | ||||
| Label toResultLabel = new Label(main, SWT.LEFT); | |||||
| Label toResultLabel = new Label(fetchCompo, SWT.LEFT); | |||||
| toResultLabel.setText("result"); | toResultLabel.setText("result"); | ||||
| toResultLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | toResultLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | ||||
| // // Start retrieval when download button is pushed | |||||
| // // TODO: how do I locate icons? | |||||
| // Button btDownload = new Button(main, SWT.PUSH); | |||||
| // try { | |||||
| // Image dlIcon = new Image(getDisplay(), | |||||
| // getClass().getResourceAsStream("C:\\Users/goya/workspace/icons/icons/material_design/png/download-button.png")); | |||||
| // btDownload.setImage(dlIcon); | |||||
| // } | |||||
| // catch(Exception ex) { | |||||
| // btDownload.setText("Download now"); | |||||
| // } | |||||
| main.pack(); | |||||
| mainComposite.pack(); | |||||
| mainComposite.layout(); | |||||
| } | } | ||||
| /// show different filter controls depending on selection in cbSource ComboViewer | /// show different filter controls depending on selection in cbSource ComboViewer | ||||
| public void showFilter(Composite parent, IStructuredSelection selection) { | |||||
| private void showFilter(Composite parent, IStructuredSelection selection) { | |||||
| SourceFilter elem = (SourceFilter) selection.getFirstElement(); | SourceFilter elem = (SourceFilter) selection.getFirstElement(); | ||||
| // clean up | // clean up | ||||
| @@ -300,6 +286,9 @@ public class LoadFromBggPart { | |||||
| System.out.println("construct " + elem + " (not implemented yet, try another one)"); | System.out.println("construct " + elem + " (not implemented yet, try another one)"); | ||||
| } | } | ||||
| parent.pack(); | |||||
| mainComposite.pack(); | |||||
| mainComposite.layout(true, true); | |||||
| } | } | ||||
| @@ -42,12 +42,13 @@ public class StatusBar { | |||||
| @Inject | @Inject | ||||
| @Optional | @Optional | ||||
| private void subscribeTopicSourceChanged | |||||
| private void subscribeTopicStatusChanged | |||||
| (@UIEventTopic(EventConstants.TOPIC_STATUS) | (@UIEventTopic(EventConstants.TOPIC_STATUS) | ||||
| String text) { | String text) { | ||||
| statusLabel.setText(text); | statusLabel.setText(text); | ||||
| statusLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT, true); | statusLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT, true); | ||||
| statusLabel.getParent().pack(); | statusLabel.getParent().pack(); | ||||
| System.out.println("Status: " + text); | System.out.println("Status: " + text); | ||||
| } | } | ||||
| } | } | ||||
| @@ -0,0 +1,14 @@ | |||||
| package xyz.veronie.bgg.ui.result; | |||||
| import org.eclipse.core.runtime.IProgressMonitor; | |||||
| import org.eclipse.core.runtime.NullProgressMonitor; | |||||
| import org.eclipse.core.runtime.jobs.Job; | |||||
| public class DownloadProgressMonitor extends NullProgressMonitor { | |||||
| public IProgressMonitor addJob(Job job) { | |||||
| // TODO Auto-generated method stub | |||||
| return null; | |||||
| } | |||||
| } | |||||