@@ -1,6 +1,6 @@ | |||
<?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"> | |||
<children xsi:type="basic:TrimmedWindow" xmi:id="_QDxdgEqSEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.trimmedwindow.main" label="BGG Tool Another" width="700" height="700"> | |||
<children xsi:type="basic:TrimmedWindow" xmi:id="_QDxdgEqSEeqT5sxfmvJ5Tg" elementId="xyz.veronie.bgg.ui.trimmedwindow.main" label="BGG Tool Another" width="700" height="800"> | |||
<children xsi:type="basic:PartStack" xmi:id="_uw_Z4F9REeuvNqpgCDWpdQ" elementId="xyz.veronie.bgg.ui.partstack.0"> | |||
<children xsi:type="basic:Part" xmi:id="_co2toF9CEeuvNqpgCDWpdQ" elementId="xyz.veronie.bgg.ui.part.batmain" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.parts.BatMain" label="Home"/> | |||
<children xsi:type="basic:Part" xmi:id="_JsfvUF9YEeuvNqpgCDWpdQ" elementId="xyz.veronie.bgg.ui.part.fetch" visible="false" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.parts.FetchPart" label="Fetch"> | |||
@@ -14,8 +14,10 @@ import org.eclipse.jface.viewers.IStructuredSelection; | |||
import org.eclipse.jface.viewers.SelectionChangedEvent; | |||
import org.eclipse.jface.viewers.StructuredSelection; | |||
import org.eclipse.swt.SWT; | |||
import org.eclipse.swt.custom.ScrolledComposite; | |||
import org.eclipse.swt.events.FocusAdapter; | |||
import org.eclipse.swt.events.FocusEvent; | |||
import org.eclipse.swt.layout.FillLayout; | |||
import org.eclipse.swt.layout.GridData; | |||
import org.eclipse.swt.layout.GridLayout; | |||
import org.eclipse.swt.widgets.Combo; | |||
@@ -82,27 +84,39 @@ public class BggUserSourceFilter { | |||
}); | |||
Composite centerComposite = new Composite(main, SWT.NONE); | |||
centerComposite.setLayout(new GridLayout(1, false)); | |||
centerComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); | |||
// centerComposite.setLayout(new FillLayout(SWT.VERTICAL)); | |||
Composite bottomComposite = new Composite(main, SWT.NONE); | |||
bottomComposite.setLayout(new GridLayout(1, false)); | |||
bottomComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); | |||
Label infoLabel = new Label(centerComposite, SWT.LEFT); | |||
Label infoLabel = new Label(bottomComposite, SWT.LEFT); | |||
infoLabel.setText("Select which flags are used as filter. Filters follow 'AND' rule."); | |||
GridData gdInfo = new GridData(SWT.FILL, SWT.FILL, true, false); | |||
gdInfo.horizontalSpan = 2; | |||
infoLabel.setLayoutData(gdInfo); | |||
new FilterFlagComposite(centerComposite, UserFlag.OWN, configManager, eventBroker); | |||
new FilterFlagComposite(centerComposite, UserFlag.PREORDERED, configManager, eventBroker); | |||
new FilterFlagComposite(centerComposite, UserFlag.WISHLIST, configManager, eventBroker); | |||
new FilterFlagComposite(centerComposite, UserFlag.WTB, configManager, eventBroker); | |||
new FilterFlagComposite(centerComposite, UserFlag.WTP, configManager, eventBroker); | |||
new FilterFlagComposite(centerComposite, UserFlag.WANT, configManager, eventBroker); | |||
new FilterFlagComposite(centerComposite, UserFlag.PREVIOUSLY_OWNED, configManager, eventBroker); | |||
new FilterFlagComposite(centerComposite, UserFlag.PLAYED, configManager, eventBroker); | |||
new FilterFlagComposite(centerComposite, UserFlag.TRADE, configManager, eventBroker); | |||
new FilterFlagComposite(centerComposite, UserFlag.RATED, configManager, eventBroker); | |||
new FilterFlagComposite(centerComposite, UserFlag.COMMENT, configManager, eventBroker); | |||
// ScrolledComposite flagsComposite = new ScrolledComposite(mainComposite, SWT.V_SCROLL); | |||
// flagsComposite.setMinHeight(300); | |||
// flagsComposite.setExpandVertical(true); | |||
// flagsComposite.setExpandHorizontal(true); | |||
// flagsComposite.setAlwaysShowScrollBars(false); | |||
// //flagsComposite.setLayout(new FillLayout(SWT.VERTICAL)); | |||
Composite flagsComposite = new Composite(bottomComposite, SWT.NONE); | |||
flagsComposite.setLayout(new GridLayout(2, false)); | |||
flagsComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); | |||
new FilterFlagComposite(flagsComposite, UserFlag.OWN, configManager, eventBroker); | |||
new FilterFlagComposite(flagsComposite, UserFlag.PREORDERED, configManager, eventBroker); | |||
new FilterFlagComposite(flagsComposite, UserFlag.WISHLIST, configManager, eventBroker); | |||
new FilterFlagComposite(flagsComposite, UserFlag.WTB, configManager, eventBroker); | |||
new FilterFlagComposite(flagsComposite, UserFlag.WTP, configManager, eventBroker); | |||
new FilterFlagComposite(flagsComposite, UserFlag.WANT, configManager, eventBroker); | |||
new FilterFlagComposite(flagsComposite, UserFlag.PREVIOUSLY_OWNED, configManager, eventBroker); | |||
new FilterFlagComposite(flagsComposite, UserFlag.PLAYED, configManager, eventBroker); | |||
new FilterFlagComposite(flagsComposite, UserFlag.TRADE, configManager, eventBroker); | |||
new FilterFlagComposite(flagsComposite, UserFlag.RATED, configManager, eventBroker); | |||
new FilterFlagComposite(flagsComposite, UserFlag.COMMENT, configManager, eventBroker); | |||
parent.pack(); | |||
parent.layout(true, true); | |||
@@ -2,6 +2,8 @@ package xyz.veronie.bgg.ui.filters.composites; | |||
import org.eclipse.e4.core.services.events.IEventBroker; | |||
import org.eclipse.swt.SWT; | |||
import org.eclipse.swt.events.MouseEvent; | |||
import org.eclipse.swt.events.MouseListener; | |||
import org.eclipse.swt.events.SelectionAdapter; | |||
import org.eclipse.swt.events.SelectionEvent; | |||
import org.eclipse.swt.layout.GridData; | |||
@@ -18,7 +20,7 @@ import xyz.veronie.bgg.types.UserFlagEvent; | |||
public class FilterFlagComposite extends Composite { | |||
private Button btnFlagSwitch; | |||
private SwitchLabel flagSwitch; | |||
/** | |||
* Create the composite. | |||
@@ -41,15 +43,16 @@ public class FilterFlagComposite extends Composite { | |||
btnCheckFlag.setText(flag.toString()); | |||
btnCheckFlag.setSelection(isTurnedOn); | |||
GridData gd_btnCheckFlag = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1); | |||
gd_btnCheckFlag.widthHint = 100; | |||
gd_btnCheckFlag.widthHint = 120; | |||
btnCheckFlag.setLayoutData(gd_btnCheckFlag); | |||
btnFlagSwitch = new Button(this, SWT.TOGGLE); | |||
GridData gd_btnFlagSwitch = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); | |||
gd_btnFlagSwitch.widthHint = 30; | |||
flagSwitch = new SwitchLabel(this, SWT.NONE); | |||
flagSwitch.setOnImage(ResourceManager.getPluginImage("xyz.veronie.bgg.ui", "icons/noun_switch on_30x30.png")); | |||
flagSwitch.setOffImage(ResourceManager.getPluginImage("xyz.veronie.bgg.ui", "icons/noun_switch off_30x30.png")); | |||
btnFlagSwitch.setEnabled(isTurnedOn); | |||
flagSwitch.setEnabled(isTurnedOn); | |||
if(isTurnedOn) { | |||
if(flagState.equals(FilterFlagState.IS)) { | |||
setSwitchOn(); | |||
@@ -60,15 +63,21 @@ public class FilterFlagComposite extends Composite { | |||
setSwitchOn(); | |||
} | |||
btnFlagSwitch.addSelectionListener(new SelectionAdapter() { | |||
flagSwitch.addMouseListener(new MouseListener() { | |||
@Override | |||
public void widgetSelected(SelectionEvent e) { | |||
Button source = (Button)e.getSource(); | |||
public void mouseDoubleClick(MouseEvent e) { | |||
} | |||
@Override | |||
public void mouseDown(MouseEvent e) { | |||
} | |||
@Override | |||
public void mouseUp(MouseEvent e) { | |||
UserFlagEvent ufe = new UserFlagEvent(); | |||
ufe.flag = flag; | |||
boolean isSelected = source.getSelection(); | |||
boolean isSelected = !flagSwitch.getState(); | |||
if(isSelected) { | |||
ufe.state = FilterFlagState.IS; | |||
setSwitchOn(); | |||
@@ -95,14 +104,14 @@ public class FilterFlagComposite extends Composite { | |||
if(!isSelected) { | |||
ufe.state = FilterFlagState.IGNORE; | |||
setSwitchOn(); | |||
btnFlagSwitch.setEnabled(false); | |||
flagSwitch.setEnabled(false); | |||
} else { | |||
if(btnFlagSwitch.getSelection()) { | |||
if(flagSwitch.getState()) { | |||
ufe.state = FilterFlagState.IS; | |||
} else { | |||
ufe.state = FilterFlagState.ISNOT; | |||
} | |||
btnFlagSwitch.setEnabled(true); | |||
flagSwitch.setEnabled(true); | |||
} | |||
eventBroker.send(EventConstants.TOPIC_USERFLAG_CHANGED, ufe); | |||
} | |||
@@ -113,12 +122,10 @@ public class FilterFlagComposite extends Composite { | |||
} | |||
private void setSwitchOn() { | |||
btnFlagSwitch.setImage(ResourceManager.getPluginImage("xyz.veronie.bgg.ui", "icons/noun_switch on_30x30.png")); | |||
btnFlagSwitch.setSelection(true); | |||
flagSwitch.setState(true); | |||
} | |||
private void setSwitchOff() { | |||
btnFlagSwitch.setImage(ResourceManager.getPluginImage("xyz.veronie.bgg.ui", "icons/noun_switch off_30x30.png")); | |||
btnFlagSwitch.setSelection(false); | |||
flagSwitch.setState(false); | |||
} | |||
@@ -0,0 +1,60 @@ | |||
package xyz.veronie.bgg.ui.filters.composites; | |||
import org.eclipse.swt.SWT; | |||
import org.eclipse.swt.events.MouseListener; | |||
import org.eclipse.swt.graphics.Image; | |||
import org.eclipse.swt.layout.RowLayout; | |||
import org.eclipse.swt.widgets.Composite; | |||
import org.eclipse.swt.widgets.Label; | |||
public class SwitchLabel extends Composite { | |||
private Label label; | |||
private boolean isTurnedOn; | |||
private Image imageOn; | |||
private Image imageOff; | |||
public SwitchLabel(Composite parent, int style) { | |||
super(parent, style); | |||
this.setLayout(new RowLayout()); | |||
label = new Label(this, SWT.None); | |||
isTurnedOn = false; | |||
} | |||
/// set image for switch off state | |||
public void setOnImage(Image imageOn) { | |||
this.imageOn = imageOn; | |||
} | |||
/// set image for switch on state | |||
public void setOffImage(Image imageOff) { | |||
this.imageOff = imageOff; | |||
} | |||
/// Set switch state: true = on, false = off | |||
public void setState(boolean isTurnedOn) { | |||
this.isTurnedOn = isTurnedOn; | |||
setSwitchImage(); | |||
} | |||
/// Get the switch state: true = on, false = off | |||
public boolean getState() { | |||
return isTurnedOn; | |||
} | |||
private void setSwitchImage() { | |||
label.setImage(isTurnedOn ? imageOn : imageOff); | |||
pack(); | |||
layout(); | |||
} | |||
@Override | |||
public void addMouseListener(MouseListener listener) { | |||
label.addMouseListener(listener); | |||
} | |||
@Override | |||
public void setEnabled(boolean enabled) { | |||
label.setEnabled(enabled); | |||
} | |||
} |
@@ -45,7 +45,6 @@ import xyz.veronie.bgg.ui.helpers.BatColors; | |||
import xyz.veronie.bgg.ui.helpers.BatLayouts; | |||
// TODO: layout of user flags | |||
// TODO: load thing list from DB | |||
// TODO: image sizes | |||
// TODO: display current thinglist name | |||
@@ -55,6 +54,7 @@ import xyz.veronie.bgg.ui.helpers.BatLayouts; | |||
// TODO: handle thing list overwrite | |||
// TODO: Display selection details on game | |||
// TODO: cache family/geeklist descriptions | |||
// TODO: allow different screen scalings | |||
@SuppressWarnings("restriction") | |||
public class BatMain { | |||