| @@ -1,28 +1,30 @@ | |||||
| <?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:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" 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="1200" height="800"> | ||||
| <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: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="1000"> | |||||
| <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="Load IDs from BGG"/> | |||||
| <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> | </children> | ||||
| <children xsi:type="basic:PartStack" xmi:id="_7hQw0EqTEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.partstack.bggresult" containerData="1000"> | |||||
| <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:PartStack" xmi:id="_7hQw0EqTEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.partstack.bggresult" containerData="600"> | |||||
| <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="Load game details"/> | |||||
| </children> | </children> | ||||
| </children> | </children> | ||||
| <children xsi:type="basic:PartSashContainer" xmi:id="_AF1vQEqUEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.partsashcontainer.gamelist"> | <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.gameslistconf"> | |||||
| <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="Load game details"/> | |||||
| </children> | |||||
| <children xsi:type="basic:PartStack" xmi:id="_CS1yUEqUEeqT5sxfmvJ5Tg" elementId="de.wt.bgg.ui.partstack.gameslist"> | |||||
| <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: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> | ||||
| </children> | </children> | ||||
| <children xsi:type="advanced:Area" xmi:id="_8nEs4EqUEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.area.status" containerData="100" label="Status"/> | |||||
| </children> | </children> | ||||
| <mainMenu xmi:id="_wtXeQEs0EeqGDvPDavxXPQ" elementId="org.eclipse.ui.main.menu"/> | <mainMenu xmi:id="_wtXeQEs0EeqGDvPDavxXPQ" elementId="org.eclipse.ui.main.menu"/> | ||||
| <trimBars xmi:id="_1nq0UFu3Eeq4377K74W4EQ" elementId="xyz.veronie.bgg.ui.status" side="Bottom"> | |||||
| <children xsi:type="menu:ToolBar" xmi:id="_JFF2UFu4Eeq4377K74W4EQ" elementId="xyz.veronie.bgg.ui.toolbar.0"> | |||||
| <children xsi:type="menu:ToolControl" xmi:id="_xUKiUFu4Eeq4377K74W4EQ" elementId="xyz.veronie.bgg.ui.toolcontrol.status" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.parts.StatusBar"/> | |||||
| </children> | |||||
| </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"/> | ||||
| @@ -32,6 +32,22 @@ public class ResultConfig { | |||||
| public Integer geeklistId = null; | public Integer geeklistId = null; | ||||
| public Integer familyId = null; | public Integer familyId = null; | ||||
| // TODO: add others | // TODO: add others | ||||
| @Override | |||||
| public String toString() { | |||||
| switch(source) { | |||||
| case BGG_USER: | |||||
| return "user = " + user; | |||||
| case GEEKLIST: | |||||
| return "Geeklist #" + geeklistId; | |||||
| case FAMILY: | |||||
| return "Family #" + familyId; | |||||
| default: | |||||
| return ""; | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -12,7 +12,7 @@ public class ThingMetaData { | |||||
| private String comment; | private String comment; | ||||
| private Integer numPlays; | private Integer numPlays; | ||||
| private static String[] titles = { "Id", "Name", "Image", "Thumb", "comment", "# plays"}; | |||||
| private static String[] titles = { "Id", "Name" }; //, "Image", "Thumb", "comment", "# plays"}; | |||||
| private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); | private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); | ||||
| @@ -55,18 +55,22 @@ public class ThingMetaData { | |||||
| case 1: | case 1: | ||||
| returnStr = this.name; | returnStr = this.name; | ||||
| break; | break; | ||||
| case 2: | |||||
| returnStr = this.imgURL; | |||||
| break; | |||||
| case 3: | |||||
| returnStr = this.thumbURL; | |||||
| break; | |||||
| case 4: | |||||
| returnStr = this.comment; | |||||
| break; | |||||
| case 5: | |||||
| returnStr = String.valueOf(this.numPlays); | |||||
| break; | |||||
| // case 2: | |||||
| // returnStr = this.imgURL; | |||||
| // break; | |||||
| // case 3: | |||||
| // returnStr = this.thumbURL; | |||||
| // break; | |||||
| // case 4: | |||||
| // returnStr = this.comment; | |||||
| // break; | |||||
| // case 5: | |||||
| // if (this.numPlays == null) { | |||||
| // returnStr = ""; | |||||
| // } else { | |||||
| // returnStr = String.valueOf(this.numPlays); | |||||
| // } | |||||
| // break; | |||||
| default: | default: | ||||
| throw new ArrayIndexOutOfBoundsException( | throw new ArrayIndexOutOfBoundsException( | ||||
| "idx " + String.valueOf(idx) + " must be in [0," + (titles.length-1) + "]"); | "idx " + String.valueOf(idx) + " must be in [0," + (titles.length-1) + "]"); | ||||
| @@ -20,5 +20,6 @@ public interface EventConstants { | |||||
| String TOPIC_RESULT_CHANGED = "RESULT_CHANGED"; | String TOPIC_RESULT_CHANGED = "RESULT_CHANGED"; | ||||
| String TOPIC_STATUS = "STATUS"; | |||||
| } | } | ||||
| @@ -1,11 +1,11 @@ | |||||
| package xyz.veronie.bgg.types; | package xyz.veronie.bgg.types; | ||||
| public enum ResultAction { | public enum ResultAction { | ||||
| ADD("add"), | |||||
| ADD("add to"), | |||||
| REP("replace"), | REP("replace"), | ||||
| SUB("subtract"), | |||||
| AND("and"), | |||||
| MIS("mis"); | |||||
| SUB("subtract from"), | |||||
| AND("intercept with"); | |||||
| //MIS("mis"); | |||||
| private String name; | private String name; | ||||
| @@ -26,6 +26,8 @@ public class GeeklistSourceFilter { | |||||
| @Inject private IEventBroker eventBroker; | @Inject private IEventBroker eventBroker; | ||||
| @Inject private ResultConfigManager configManager; | @Inject private ResultConfigManager configManager; | ||||
| private Label confLabel; | |||||
| 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); | ||||
| parent.setLayout(filterLayout); | parent.setLayout(filterLayout); | ||||
| @@ -66,12 +68,20 @@ public class GeeklistSourceFilter { | |||||
| // nothing | // nothing | ||||
| } | } | ||||
| }); | }); | ||||
| confLabel = new Label(parent, SWT.LEFT); | |||||
| confLabel.setText(""); | |||||
| GridData gd = new GridData(SWT.FILL, SWT.FILL, false, false); | |||||
| gd.horizontalSpan = 2; | |||||
| confLabel.setLayoutData(gd); | |||||
| parent.layout(); | parent.layout(); | ||||
| } | } | ||||
| public void setGeeklistId(Integer geeklistId) { | public void setGeeklistId(Integer geeklistId) { | ||||
| if(eventBroker != null) { | if(eventBroker != null) { | ||||
| eventBroker.post(EventConstants.TOPIC_GEEKLIST_CHANGED, geeklistId); | eventBroker.post(EventConstants.TOPIC_GEEKLIST_CHANGED, geeklistId); | ||||
| confLabel.setText("Geeklist #" + geeklistId); | |||||
| } else { | } else { | ||||
| System.out.println("setGeeklistId: eventBroker is null."); | System.out.println("setGeeklistId: eventBroker is null."); | ||||
| } | } | ||||
| @@ -66,7 +66,7 @@ public class BggResultPart { | |||||
| // This will create the columns for the table | // This will create the columns for the table | ||||
| private void createColumns(final Composite parent, final TableViewer viewer) { | private void createColumns(final Composite parent, final TableViewer viewer) { | ||||
| String[] titles = ThingMetaData.getTitles(); | String[] titles = ThingMetaData.getTitles(); | ||||
| int[] bounds = { 100, 100, 100, 100, 100, 100 }; | |||||
| int[] bounds = { 100, 500 }; // , 100, 100, 100, 100 }; | |||||
| for(int i = 0; i < titles.length; ++i) { | for(int i = 0; i < titles.length; ++i) { | ||||
| TableViewerColumn col = createTableViewerColumn(titles[i], bounds[i], i); | TableViewerColumn col = createTableViewerColumn(titles[i], bounds[i], i); | ||||
| @@ -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.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; | ||||
| @@ -16,7 +17,6 @@ import org.eclipse.jface.viewers.StructuredSelection; | |||||
| import org.eclipse.swt.SWT; | import org.eclipse.swt.SWT; | ||||
| import org.eclipse.swt.events.SelectionAdapter; | import org.eclipse.swt.events.SelectionAdapter; | ||||
| import org.eclipse.swt.events.SelectionEvent; | import org.eclipse.swt.events.SelectionEvent; | ||||
| import org.eclipse.swt.graphics.Image; | |||||
| 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; | ||||
| @@ -65,44 +65,44 @@ public class LoadFromBggPart { | |||||
| Composite main = new Composite(parent, SWT.FILL); | Composite main = new Composite(parent, SWT.FILL); | ||||
| main.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | main.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | ||||
| GridLayout layout = new GridLayout(2, false); | |||||
| GridLayout layout = new GridLayout(5, false); | |||||
| main.setLayout(layout); | main.setLayout(layout); | ||||
| // contains configuration options for download of the bgg thing ID list | |||||
| Group dlConfigGroup = new Group(main, SWT.SHADOW_ETCHED_IN); | |||||
| GridData configGrid = new GridData(SWT.FILL, SWT.FILL, true, true); | |||||
| dlConfigGroup.setText("Configure download..."); | |||||
| dlConfigGroup.setLayoutData(configGrid); | |||||
| // // contains configuration options for download of the bgg thing ID list | |||||
| // Group dlConfigGroup = new Group(main, SWT.SHADOW_ETCHED_IN); | |||||
| // GridData configGrid = new GridData(SWT.FILL, SWT.FILL, true, true); | |||||
| // dlConfigGroup.setText("Configure filters..."); | |||||
| // dlConfigGroup.setLayoutData(configGrid); | |||||
| // GridLayout layoutG = new GridLayout(2, false); | |||||
| // dlConfigGroup.setLayout(layoutG); | |||||
| GridLayout layoutG = new GridLayout(2, false); | |||||
| dlConfigGroup.setLayout(layoutG); | |||||
| Label lblSource = new Label(dlConfigGroup, SWT.LEFT); | |||||
| Label lblSource = new Label(main, SWT.LEFT); | |||||
| lblSource.setText("Source: "); | lblSource.setText("Source: "); | ||||
| lblSource.setLayoutData(new GridData(SWT.RIGHT, 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(dlConfigGroup, SWT.READ_ONLY); | |||||
| ComboViewer cbSource = new ComboViewer(main, SWT.READ_ONLY); | |||||
| 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>(); | ||||
| for(SourceFilter sf : SourceFilter.values()) { | for(SourceFilter sf : SourceFilter.values()) { | ||||
| sources.add(sf); | sources.add(sf); | ||||
| } | } | ||||
| cbSource.setInput(sources); | cbSource.setInput(sources); | ||||
| // TODO: implement all the sources | // TODO: implement all the sources | ||||
| cbSource.setSelection(new StructuredSelection(configManager.getResultConfig().source)); | cbSource.setSelection(new StructuredSelection(configManager.getResultConfig().source)); | ||||
| // listener is configured further below | // listener is configured further below | ||||
| makeEmptySpace(main, 1); | |||||
| // choose the thing sub-type | // choose the thing sub-type | ||||
| Label lblSubtype = new Label(dlConfigGroup, SWT.LEFT); | |||||
| Label lblSubtype = new Label(main, 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(dlConfigGroup, SWT.READ_ONLY); | |||||
| ComboViewer cbSubtypes = new ComboViewer(main, SWT.READ_ONLY); | |||||
| 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>(); | ||||
| for (Subtype st : Subtype.values()) { | for (Subtype st : Subtype.values()) { | ||||
| @@ -117,32 +117,17 @@ public class LoadFromBggPart { | |||||
| eventBroker.send(EventConstants.TOPIC_SUBTYPE_CHANGED, selection.getFirstElement()); | eventBroker.send(EventConstants.TOPIC_SUBTYPE_CHANGED, selection.getFirstElement()); | ||||
| } | } | ||||
| }); | }); | ||||
| // choose action on result list | |||||
| Label lblAct = new Label(dlConfigGroup, SWT.LEFT); | |||||
| lblAct.setText("Action on result: "); | |||||
| lblAct.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, false)); | |||||
| ComboViewer cbAct = new ComboViewer(dlConfigGroup, SWT.READ_ONLY); | |||||
| cbAct.setContentProvider(ArrayContentProvider.getInstance()); | |||||
| List<ResultAction> actions = new ArrayList<ResultAction>(); | |||||
| for(ResultAction act : ResultAction.values()) { | |||||
| actions.add(act); | |||||
| } | |||||
| cbAct.setInput(actions); | |||||
| cbAct.setSelection(new StructuredSelection(configManager.getResultConfig().action)); | |||||
| cbAct.addSelectionChangedListener(new ISelectionChangedListener() { | |||||
| @Override | |||||
| public void selectionChanged(SelectionChangedEvent event) { | |||||
| IStructuredSelection selection = (IStructuredSelection) event.getSelection(); | |||||
| eventBroker.send(EventConstants.TOPIC_ACTION_CHANGED, selection.getFirstElement()); | |||||
| } | |||||
| }); | |||||
| // area to display filter controls in | |||||
| // next row: | |||||
| // area to display filter controls in | |||||
| Group gFilters = new Group(main, SWT.SHADOW_ETCHED_IN); | Group gFilters = new Group(main, SWT.SHADOW_ETCHED_IN); | ||||
| gFilters.setText(""); | gFilters.setText(""); | ||||
| gFilters.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | |||||
| GridData gdf = new GridData(SWT.FILL, SWT.FILL, false, false); | |||||
| gdf.horizontalSpan = 5; | |||||
| gFilters.setLayoutData(gdf); | |||||
| 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 | ||||
| @@ -156,26 +141,23 @@ public class LoadFromBggPart { | |||||
| }); | }); | ||||
| // next row: | |||||
| makeEmptySpace(main, 5); | |||||
| // next row | |||||
| Label empty = new Label(main, SWT.LEFT); | |||||
| empty.setText(""); | |||||
| empty.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); | |||||
| // Start retrieval when download button is pushed | |||||
| // choose action on result list | |||||
| Button btDownload = new Button(main, SWT.PUSH); | Button btDownload = new Button(main, SWT.PUSH); | ||||
| // TODO: how do I locate icons? | |||||
| 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"); | |||||
| } | |||||
| GridData gd = new GridData(SWT.LEFT, SWT.FILL, false, false); | |||||
| gd.horizontalSpan = 2; | |||||
| btDownload.setLayoutData(gd); | |||||
| btDownload.setText("Fetch"); | |||||
| btDownload.addSelectionListener(new SelectionAdapter() { | btDownload.addSelectionListener(new SelectionAdapter() { | ||||
| @Override | @Override | ||||
| public void widgetSelected(SelectionEvent e) { | public void widgetSelected(SelectionEvent e) { | ||||
| System.out.println("Downloading " + cbSource.getSelection().toString()); | |||||
| eventBroker.send(EventConstants.TOPIC_STATUS, "Fetching " + cbSource.getSelection().toString()); | |||||
| ResultConfig resultConfig = configManager.getResultConfig(); | ResultConfig resultConfig = configManager.getResultConfig(); | ||||
| IStructuredSelection selection = (IStructuredSelection) cbSource.getSelection(); | IStructuredSelection selection = (IStructuredSelection) cbSource.getSelection(); | ||||
| @@ -184,7 +166,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()) { | ||||
| System.out.println("Please enter a user name."); | |||||
| MessageDialog.openError(main.getShell(), "", "Please enter a user name."); | |||||
| return; | return; | ||||
| } else { | } else { | ||||
| System.out.println("...for user '" + user + "'"); | System.out.println("...for user '" + user + "'"); | ||||
| @@ -196,7 +178,7 @@ public class LoadFromBggPart { | |||||
| } 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) { | ||||
| System.out.println("Please enter a geeklist id."); | |||||
| MessageDialog.openError(main.getShell(), "", "Please enter a geeklist id."); | |||||
| return; | return; | ||||
| } else { | } else { | ||||
| System.out.println("...for geeklist id '" + geeklistId + "'"); | System.out.println("...for geeklist id '" + geeklistId + "'"); | ||||
| @@ -218,7 +200,46 @@ public class LoadFromBggPart { | |||||
| } | } | ||||
| } | } | ||||
| }); | }); | ||||
| btDownload.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, false)); | |||||
| Label lblAct = new Label(main, SWT.LEFT); | |||||
| lblAct.setText("and"); | |||||
| lblAct.setLayoutData(new GridData(SWT.CENTER, SWT.FILL, false, false)); | |||||
| ComboViewer cbAct = new ComboViewer(main, SWT.READ_ONLY); | |||||
| GridData gdact = new GridData(SWT.FILL, SWT.FILL, false, false); | |||||
| cbSubtypes.getCombo().setLayoutData(gdact); | |||||
| cbAct.setContentProvider(ArrayContentProvider.getInstance()); | |||||
| List<ResultAction> actions = new ArrayList<ResultAction>(); | |||||
| for(ResultAction act : ResultAction.values()) { | |||||
| actions.add(act); | |||||
| } | |||||
| cbAct.setInput(actions); | |||||
| cbAct.setSelection(new StructuredSelection(configManager.getResultConfig().action)); | |||||
| cbAct.addSelectionChangedListener(new ISelectionChangedListener() { | |||||
| @Override | |||||
| public void selectionChanged(SelectionChangedEvent event) { | |||||
| IStructuredSelection selection = (IStructuredSelection) event.getSelection(); | |||||
| eventBroker.send(EventConstants.TOPIC_ACTION_CHANGED, selection.getFirstElement()); | |||||
| } | |||||
| }); | |||||
| Label toResultLabel = new Label(main, SWT.LEFT); | |||||
| toResultLabel.setText("result"); | |||||
| 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(); | main.pack(); | ||||
| @@ -275,6 +296,15 @@ public class LoadFromBggPart { | |||||
| return display; | return display; | ||||
| } | } | ||||
| public void makeEmptySpace(Composite parent, int span) { | |||||
| Label empty = new Label(parent, SWT.LEFT); | |||||
| empty.setText(""); | |||||
| GridData gde = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1); | |||||
| if(span > 1) { | |||||
| gde.horizontalSpan = span; | |||||
| } | |||||
| empty.setLayoutData(gde); | |||||
| } | |||||
| // DISPOSE images! | |||||
| } | } | ||||
| @@ -0,0 +1,40 @@ | |||||
| package xyz.veronie.bgg.ui.parts; | |||||
| import javax.annotation.PostConstruct; | |||||
| import javax.inject.Inject; | |||||
| import org.eclipse.e4.core.di.annotations.Creatable; | |||||
| import org.eclipse.e4.core.di.annotations.Optional; | |||||
| import org.eclipse.e4.ui.di.UIEventTopic; | |||||
| import org.eclipse.swt.SWT; | |||||
| import org.eclipse.swt.widgets.Composite; | |||||
| import org.eclipse.swt.widgets.Label; | |||||
| import xyz.veronie.bgg.types.EventConstants; | |||||
| @Creatable | |||||
| public class StatusBar { | |||||
| private Label statusLabel; | |||||
| private Composite main; | |||||
| @PostConstruct | |||||
| public void createControls(Composite parent) { | |||||
| main = new Composite(parent, SWT.FILL); | |||||
| statusLabel = new Label(main, SWT.FILL); | |||||
| statusLabel.setText("ASDF"); | |||||
| } | |||||
| @Inject | |||||
| @Optional | |||||
| private void subscribeTopicSourceChanged | |||||
| (@UIEventTopic(EventConstants.TOPIC_STATUS) | |||||
| String text) { | |||||
| statusLabel.setText(text); | |||||
| main.layout(); | |||||
| System.out.println("Status: " + text); | |||||
| } | |||||
| } | |||||