소스 검색

Implemented first version of output of thing to result line.

Slightly rearranged metadata (some fields are now in ThingUserData).
Filling ThingUserData when fetching by user with BggApi.
Added ExportResultHandler.
pull/16/head
veronie 4 년 전
부모
커밋
ee3e04c3eb
12개의 변경된 파일434개의 추가작업 그리고 151개의 파일을 삭제
  1. +2
    -0
      xyz.veronie.bgg.ui/Application.e4xmi
  2. +15
    -6
      xyz.veronie.bgg.ui/src/xyz/veronie/bgg/localdb/SqliteController.java
  3. +68
    -9
      xyz.veronie.bgg.ui/src/xyz/veronie/bgg/result/BggApi.java
  4. +8
    -0
      xyz.veronie.bgg.ui/src/xyz/veronie/bgg/result/Recommendation.java
  5. +159
    -4
      xyz.veronie.bgg.ui/src/xyz/veronie/bgg/result/Thing.java
  6. +2
    -10
      xyz.veronie.bgg.ui/src/xyz/veronie/bgg/result/ThingDetails.java
  7. +0
    -74
      xyz.veronie.bgg.ui/src/xyz/veronie/bgg/result/ThingDetailsComposite.java
  8. +1
    -28
      xyz.veronie.bgg.ui/src/xyz/veronie/bgg/result/ThingMetaData.java
  9. +134
    -0
      xyz.veronie.bgg.ui/src/xyz/veronie/bgg/result/ThingUserData.java
  10. +34
    -0
      xyz.veronie.bgg.ui/src/xyz/veronie/bgg/ui/handlers/ExportResultHandler.java
  11. +11
    -14
      xyz.veronie.bgg.ui/src/xyz/veronie/bgg/ui/parts/BatMain.java
  12. +0
    -6
      xyz.veronie.bgg.ui/src/xyz/veronie/bgg/ui/parts/ThingListPart.java

+ 2
- 0
xyz.veronie.bgg.ui/Application.e4xmi 파일 보기

@@ -24,12 +24,14 @@
<handlers xmi:id="_a0tuEGAUEeuNUoCJDLJTzQ" elementId="xyz.veronie.bgg.ui.handler.save" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.handlers.SaveGamelistHandler" command="_lA5t8F9TEeuvNqpgCDWpdQ"/>
<handlers xmi:id="_xJXjUG3zEeuCP7xCflu8WA" elementId="xyz.veronie.bgg.ui.handler.load" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.handlers.LoadGamelistHandler" command="_qyrHAG3zEeuCP7xCflu8WA"/>
<handlers xmi:id="_y97SUG7REeutwMlAyj2x8w" elementId="xyz.veronie.bgg.ui.handler.importResultTxt" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.handlers.ImportResultTxtHandler" command="_rkauIG7REeutwMlAyj2x8w"/>
<handlers xmi:id="_I0EUoHOzEeuMU7Jt9moleA" elementId="xyz.veronie.bgg.ui.handler.export" contributionURI="bundleclass://xyz.veronie.bgg.ui/xyz.veronie.bgg.ui.handlers.ExportResultHandler" command="_OUnzIHOzEeuMU7Jt9moleA"/>
<menuContributions xmi:id="_AitwEHBeEeuk7d_98DxC5A" elementId="xyz.veronie.bgg.ui.menucontribution.gamelists" accessibilityPhrase="Game Lists" positionInParent="0">
<children xsi:type="menu:HandledMenuItem" xmi:id="_JvwHYHBeEeuk7d_98DxC5A" elementId="importResult" label="Import..." tooltip="Import thing list from bgg1tool result.txt file" command="_rkauIG7REeutwMlAyj2x8w"/>
</menuContributions>
<commands xmi:id="_lA5t8F9TEeuvNqpgCDWpdQ" elementId="xyz.veronie.bgg.ui.command.save" commandName="Save" description="save game list"/>
<commands xmi:id="_qyrHAG3zEeuCP7xCflu8WA" elementId="xyz.veronie.bgg.ui.command.load" commandName="Load" description="load game list"/>
<commands xmi:id="_rkauIG7REeutwMlAyj2x8w" elementId="xyz.veronie.bgg.ui.command.importResultTxt" commandName="ImportResultTxt" description="Import result.txt from bgg1tool"/>
<commands xmi:id="_OUnzIHOzEeuMU7Jt9moleA" elementId="xyz.veronie.bgg.ui.command.export" commandName="Export" description="export result.txt file"/>
<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_Zs0qSEeqT5sxfmvJ5Tg" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>


+ 15
- 6
xyz.veronie.bgg.ui/src/xyz/veronie/bgg/localdb/SqliteController.java 파일 보기

@@ -14,6 +14,7 @@ import java.util.List;
import xyz.veronie.bgg.result.Thing;
import xyz.veronie.bgg.result.ThingMetaData;
import xyz.veronie.bgg.result.ThingUserData;
import xyz.veronie.bgg.ui.helpers.Resources;
public class SqliteController {
@@ -181,10 +182,16 @@ public class SqliteController {
thingStatement.setString(2, metaData.getName());
thingStatement.setString(3, metaData.getImgURL());
thingStatement.setString(4, metaData.getThumbURL());
thingStatement.setString(5, metaData.getComment());
if(metaData.getNumPlays() != null) {
thingStatement.setInt(6, metaData.getNumPlays());
ThingUserData userData = thing.getUserData();
if(userData != null) {
thingStatement.setString(5, userData.getComment());
if(userData.getNumPlays() != null) {
thingStatement.setInt(6, userData.getNumPlays());
} else {
thingStatement.setNull(6, java.sql.Types.INTEGER);
}
} else {
thingStatement.setString(5, "");
thingStatement.setNull(6, java.sql.Types.INTEGER);
}
thingStatement.execute();
@@ -254,10 +261,12 @@ public class SqliteController {
ThingMetaData metaData = new ThingMetaData(id,
res.getString(2),
res.getString(3),
res.getString(4),
res.getString(5),
res.getInt(6));
res.getString(4));
ThingUserData userData = new ThingUserData();
userData.setComment(res.getString(5));
userData.setNumPlays(res.getInt(6));
Thing thing = new Thing(id, metaData);
thing.setUserData(userData);
thingList.add(thing);
}


+ 68
- 9
xyz.veronie.bgg.ui/src/xyz/veronie/bgg/result/BggApi.java 파일 보기

@@ -78,6 +78,21 @@ public class BggApi {
return getThings(urlStr.toString());
}
public ArrayList<Thing> getThingDetails(Set<Integer> ids) {
StringBuilder urlStr = new StringBuilder();
urlStr.append(BASE_URL + "thing?id=");
String sep = "";
for (Integer integer : ids) {
urlStr.append(sep + integer.toString());
if(sep.isEmpty()) {
sep = ",";
}
}
return getThings(urlStr.toString());
}
public ArrayList<Thing> getThingsForUser(String user) throws IllegalArgumentException {
ResultConfig resultConfig = configManager.getResultConfig();
@@ -230,11 +245,51 @@ public class BggApi {
id,
getValue(eElement, "name"),
getValue(eElement, "image"),
getValue(eElement, "thumbnail"),
getValue(eElement, "comment"),
Integer.parseInt(getValue(eElement, "numplays"))
getValue(eElement, "thumbnail")
);
ThingUserData tud = new ThingUserData();
tud.setNumPlays(Integer.valueOf(getValue(eElement, "numplays")));
tud.setComment(getValue(eElement, "comment"));
// rating
NodeList statsNodes = eElement.getElementsByTagName("stats");
if(statsNodes.getLength() > 0) {
Node statsNode = statsNodes.item(0);
NodeList statsChildren = statsNode.getChildNodes();
if(statsChildren.getLength() > 0) {
Element ratingNode = (Element)statsChildren.item(0);
String ratingValue = ratingNode.getAttribute("value");
if(!ratingValue.equals("N/A")) {
try {
Float rating = Float.valueOf(ratingValue);
tud.setRating(rating);
}
catch(NumberFormatException e) {
System.out.println("WARN: rating value is not a float.");
}
}
}
}
NodeList statusNodes = eElement.getElementsByTagName("status");
if(statusNodes.getLength() > 0) {
Element statusNode = (Element)statusNodes.item(0);
tud.setOwn(attributeToBoolean(statusNode, "own"));
tud.setPrevowned(attributeToBoolean(statusNode, "prevowned"));
tud.setFortrade(attributeToBoolean(statusNode, "fortrade"));
tud.setWant(attributeToBoolean(statusNode, "want"));
tud.setWanttoplay(attributeToBoolean(statusNode, "wanttoplay"));
tud.setWanttobuy(attributeToBoolean(statusNode, "wanttobuy"));
tud.setWishlist(attributeToBoolean(statusNode, "wishlist"));
if(statusNode.hasAttribute("wishlistpriority")) {
tud.setWishlistpriority(Integer.valueOf(statusNode.getAttribute("wishlistpriority")));
}
tud.setPreordered(attributeToBoolean(statusNode, "preordered"));
tud.setLastmodified(statusNode.getAttribute("lastmodified"));
}
Thing thing = new Thing(id, tmd);
thing.setUserData(tud);
things.add(thing);
}
}
@@ -263,10 +318,7 @@ public class BggApi {
id,
name,
getValue(eElement, "image"),
getValue(eElement, "thumbnail"),
getValue(eElement, "comment"),
null
);
getValue(eElement, "thumbnail"));
Thing thing = new Thing(id, tmd);
things.add(thing);
}
@@ -299,7 +351,7 @@ public class BggApi {
ThingMetaData tmd = new ThingMetaData(
id,
eLink.getAttribute("value"),
"", "", "", null);
"", "");
Thing thing = new Thing(id, tmd);
things.add(thing);
}
@@ -338,7 +390,7 @@ public class BggApi {
ThingMetaData tmd = new ThingMetaData(
id,
eElement.getAttribute("objectname"),
"", "", "", null);
"", "");
Thing thing = new Thing(id, tmd);
things.add(thing);
}
@@ -362,6 +414,13 @@ public class BggApi {
}
private Boolean attributeToBoolean(Element statusNode, String attribute) {
if(statusNode.hasAttribute(attribute)) {
return statusNode.getAttribute(attribute).equals("0") ? false : true;
}
return null;
}
private void checkForErrors(Document doc) throws IllegalArgumentException {
NodeList nList = doc.getElementsByTagName("error");
if(nList.getLength() > 0) {


+ 8
- 0
xyz.veronie.bgg.ui/src/xyz/veronie/bgg/result/Recommendation.java 파일 보기

@@ -0,0 +1,8 @@
package xyz.veronie.bgg.result;
public enum Recommendation {
N, // not supported
P, // not recommended
R, // recommended
B // best
}

+ 159
- 4
xyz.veronie.bgg.ui/src/xyz/veronie/bgg/result/Thing.java 파일 보기

@@ -20,10 +20,12 @@ public class Thing {

private int id;
private ThingMetaData metaData;
private ThingUserData userData;
private ThingDetails details;
// cache
private Image thumbImage;
private Path imagePath;
public static final String IdHeader = "ID";
public static final String ThumbHeader = "Thumbnail";
@@ -49,9 +51,19 @@ public class Thing {
public void setMetaData(ThingMetaData metaData) {
this.metaData = metaData;
}
public void setUserData(ThingUserData userData) {
this.userData = userData;
}
public ThingUserData getUserData() {
return userData;
}
public ThingDetails getDetails() {
return details;
}
public void setDetails(ThingDetails details) {
this.details = details;
}
@@ -63,14 +75,21 @@ public class Thing {
return thumbImage;
}
public String getImagePath() {
if(imagePath != null)
return imagePath.toString();
else
return "";
}
private void getThumbImage(int thingId) {
Path tmpDir = Resources.INSTANCE.getTmpDir();
if(tmpDir != null) {
Path imageFile = Paths.get(Resources.INSTANCE.getThumbsDir().toString()
imagePath = Paths.get(Resources.INSTANCE.getThumbsDir().toString()
+ File.separator + String.valueOf(thingId) + ".png");
if(Files.exists(imageFile, LinkOption.NOFOLLOW_LINKS)) {
String filename = imageFile.toString().replace("\\","/");
if(Files.exists(imagePath, LinkOption.NOFOLLOW_LINKS)) {
String filename = imagePath.toString().replace("\\","/");
thumbImage = Resources.INSTANCE.getResourceManager().createImage(
ImageDescriptor.createFromFile(null, filename));
} else {
@@ -81,7 +100,7 @@ public class Thing {

ImageLoader saver = new ImageLoader();
saver.data = new ImageData[] { thumbImage.getImageData() };
saver.save(imageFile.toString(), SWT.IMAGE_PNG);
saver.save(imagePath.toString(), SWT.IMAGE_PNG);
} catch (MalformedURLException e) {
System.out.println("INFO: Malformed URL for ThingId " + thingId);
}
@@ -130,4 +149,140 @@ public class Thing {
}
}
/// convert the thing into a comma-separated line for a result.txt file
/**
* The format is (without line breaks):
* id,name,designer,publisher,artist,yearpublished,minplayers,maxplayers,playingtime,minplaytime,maxplaytime,
* age,usersrated,average,bayesaverage,rank,rank_wg,numcomments,numweights,averageweight,stddev,median,
* owned,trading,wanting,wishing,userrating,image,category,mechanic,comment,
* 1player,2player,3player,4player,5player,6player,7player,8player,9player,10player,
* 11player,12player,13player,14player,15player,16player,17player,18player,19player,20player,
* description,exp,basegame,reimplement,reimplement_name,reimplemented,reimplemented_name,
* contains,contains_name,iscontained,iscontained_name,integration,integration_name,
* numplays,price,userweight,wishpriority,expansions,domain,family,age_poll
*
* @return
*/
public String toResultTxtLine() {
StringBuilder str = new StringBuilder();
final String emptyItem = "\"\",";
// id,name,designer,publisher,artist,yearpublished,minplayers,maxplayers,playingtime,minplaytime,maxplaytime,
// age,usersrated,average,bayesaverage,rank,rank_wg,numcomments,numweights,averageweight,stddev,median,
str.append(Integer.toString(id)).append(",");
str.append(metaData.getName()).append(",");
if(details != null) {
str.append(details.designer).append(",");
str.append(details.publisher).append(",");
str.append(details.artist).append(",");
str.append(details.yearpublished).append(",");
str.append(details.minplayers).append(",");
str.append(details.maxplayers).append(",");
str.append(details.playingtime).append(",");
str.append(details.minplaytime).append(",");
str.append(details.maxplaytime).append(",");
str.append(details.age).append(",");
str.append(details.usersrated).append(",");
str.append(details.average).append(",");
str.append(floatToResult(details.bayesaverage)).append(",");
str.append(details.rank).append(",");
str.append(details.rank_wg).append(",");
str.append(details.numcomments).append(",");
str.append(details.numweights).append(",");
str.append(floatToResult(details.averageweight)).append(",");
str.append(floatToResult(details.stddev)).append(",");
str.append(floatToResult(details.median)).append(",");
} else {
for(int i = 0; i < 20; ++i) {
str.append(emptyItem);
}
}
// owned,trading,wanting,wishing,userrating,
if(userData != null) {
str.append(userData.getOwn()?"1":"0").append(",");
str.append(userData.getFortrade()?"1":"0").append(",");
str.append(userData.getWant()?"1":"0").append(",");
str.append(userData.getWishlist()?"1":"0").append(",");
str.append(floatToResult(userData.getRating())).append(",");
}
// image,category,mechanic,comment,
str.append(getImagePath()).append(",");
if(details != null) {
str.append(details.category).append(",");
str.append(details.mechanic).append(",");
} else str.append(emptyItem).append(emptyItem);
if(userData != null) {
str.append(userData.getComment()).append(",");
} else str.append(emptyItem);
// 1player,2player,3player,4player,5player,6player,7player,8player,9player,10player,
// 11player,12player,13player,14player,15player,16player,17player,18player,19player,20player,
if(details != null) {
for(Recommendation r : details.players) {
str.append(r.name()).append(",");
}
} else {
for(int i = 0; i < 20; ++i) {
str.append("N,");
}
}
// description,exp,basegame,reimplement,reimplement_name,reimplemented,reimplemented_name,
// contains,contains_name,iscontained,iscontained_name,integration,integration_name,
if(details != null) {
str.append(details.description).append(",");
str.append(details.expansion).append(",");
str.append(details.basegameId).append(",");
str.append(details.reimplementId).append(",");
str.append(details.reimplement_name).append(",");
str.append(details.reimplementedById).append(",");
str.append(details.reimplementedByName).append(",");
str.append(details.containsId).append(",");
str.append(details.containsName).append(",");
str.append(details.iscontained).append(",");
str.append(details.iscontained_name).append(",");
str.append(details.integration).append(",");
str.append(details.integration_name).append(",");
} else {
for(int i = 0; i < 13; ++i) {
str.append(emptyItem);
}
}
// numplays,price,userweight,wishpriority,expansions,domain,family,age_poll
if(userData != null) {
str.append(userData.getNumPlays()).append(",");
} else str.append(emptyItem);
if(details != null) {
str.append(details.price).append(",");
} else str.append(emptyItem);
// TODO: find out how to get userweight...
str.append(emptyItem);
if(userData != null) {
str.append(userData.getWishlistpriority()).append(",");
} else str.append(emptyItem);
if(details != null) {
str.append(details.expansions).append(",");
str.append(details.domain).append(",");
str.append(details.family).append(",");
str.append(details.age_poll).append(",");
} else {
str.append(emptyItem);
str.append(emptyItem);
str.append(emptyItem);
str.append(emptyItem);
}
return str.toString();
}


private String floatToResult(Float rating) {
if(rating == null) {
return "";
} else {
return Float.toString(rating.floatValue());
}
}
}

+ 2
- 10
xyz.veronie.bgg.ui/src/xyz/veronie/bgg/result/ThingDetails.java 파일 보기

@@ -2,7 +2,6 @@ package xyz.veronie.bgg.result;
public class ThingDetails {
Integer id;
String name;
String designer;
String publisher;
String artist;
@@ -23,18 +22,13 @@ public class ThingDetails {
Float averageweight;
Float stddev;
Float median;
Boolean owned;
Boolean trading;
Boolean wanting;
Boolean wishing;
Float userrating;
String image;
Integer category;
Integer mechanic;
String comment;
Integer[] players; // 1 to 20
Recommendation[] players; // 1 to 20
String description;
// exp,
Integer expansion;
Integer basegameId;
Integer reimplementId;
String reimplement_name;
@@ -48,8 +42,6 @@ public class ThingDetails {
String integration_name;
Integer numplays;
Float price;
Float userweight;
Integer wishpriority;
Integer expansions;
String domain;
String family;


+ 0
- 74
xyz.veronie.bgg.ui/src/xyz/veronie/bgg/result/ThingDetailsComposite.java 파일 보기

@@ -1,74 +0,0 @@
package xyz.veronie.bgg.result;
import java.awt.Label;
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 ThingDetailsComposite extends Composite {
ThingDetails thingDetails;
private Label nameField;
private Label designerField;
private Label publisherField;
private Label yearField;
public ThingDetailsComposite(Composite parent, int style) {
super(parent, style);
}
@PostConstruct
public void create() {
setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
GridLayout layout = new GridLayout(2, false);
setLayout(layout);
Label nameLbl = new Label("Name");
applyLayout(nameLbl);
nameField = new Label("");
Label designerLbl = new Label("Designer");
applyLayout(designerLbl);
designerField = new Label("");
Label publisherLbl = new Label("Publisher");
applyLayout(publisherLbl);
publisherField = new Label("");
Label yearLbl = new Label("Publisher");
applyLayout(yearLbl);
yearField = new Label("");
this.getParent().layout();
}
private void applyLayout(Label label) {
label.setAlignment(SWT.RIGHT);
}
public void selectedThingChanged(Thing thing) {
System.out.println("TOPIC_THING_SELECTION: " + thing);
thingDetails = thing.getDetails();
if(thingDetails != null) {
nameField.setText(thingDetails.name);
designerField.setText(thingDetails.designer);
publisherField.setText(thingDetails.publisher);
yearField.setText(Integer.toString(thingDetails.yearpublished));
} else {
nameField.setText("");
designerField.setText("");
publisherField.setText("");
yearField.setText("");
}
this.getParent().layout();
}
}

+ 1
- 28
xyz.veronie.bgg.ui/src/xyz/veronie/bgg/result/ThingMetaData.java 파일 보기

@@ -2,7 +2,6 @@ package xyz.veronie.bgg.result;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
//import com.google.gson.Gson;
public class ThingMetaData implements java.io.Serializable {
private static final long serialVersionUID = -5268898737006538509L;
@@ -11,21 +10,15 @@ public class ThingMetaData implements java.io.Serializable {
private String name;
private String imgURL;
private String thumbURL;
private String comment;
private Integer numPlays;
private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
public ThingMetaData(int id, String name,
String imgURL, String thumURL,
String comment, Integer numPlays) {
String imgURL, String thumURL) {
this.setId(id);
this.setName(name);
this.setImgURL(imgURL);
this.setThumbURL(thumURL);
this.setComment(comment);
this.setNumPlays(numPlays);
}
@@ -78,29 +71,9 @@ public class ThingMetaData implements java.io.Serializable {
this.thumbURL = thumbURL);
}
public Integer getNumPlays() {
return numPlays;
}
public void setNumPlays(Integer numPlays) {
this.numPlays = numPlays;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
propertyChangeSupport.firePropertyChange("comment", this.comment,
this.comment = comment);
}
@Override
public String toString() {
return String.valueOf(id);
// Gson gson = new Gson();
// return gson.toJson(this);
}


+ 134
- 0
xyz.veronie.bgg.ui/src/xyz/veronie/bgg/result/ThingUserData.java 파일 보기

@@ -0,0 +1,134 @@
package xyz.veronie.bgg.result;
public class ThingUserData {
private Integer numplays;
private String comment;
private Float rating;
private Boolean own;
private Boolean prevowned;
private Boolean fortrade;
private Boolean want;
private Boolean wanttoplay;
private Boolean wanttobuy;
private Boolean wishlist;
private Integer wishlistpriority;
private Boolean preordered;
private String lastmodified;
//private Float weight;
public Integer getNumPlays() {
return numplays;
}
public void setNumPlays(Integer numPlays) {
this.numplays = numPlays;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public Float getRating() {
return rating;
}
public void setRating(Float rating) {
this.rating = rating;
}
public Boolean getOwn() {
return own;
}
public void setOwn(Boolean own) {
this.own = own;
}
public Boolean getPrevowned() {
return prevowned;
}
public void setPrevowned(Boolean prevowned) {
this.prevowned = prevowned;
}
public Boolean getFortrade() {
return fortrade;
}
public void setFortrade(Boolean fortrade) {
this.fortrade = fortrade;
}
public Boolean getWant() {
return want;
}
public void setWant(Boolean want) {
this.want = want;
}
public Boolean getWanttoplay() {
return wanttoplay;
}
public void setWanttoplay(Boolean wanttoplay) {
this.wanttoplay = wanttoplay;
}
public Boolean getWanttobuy() {
return wanttobuy;
}
public void setWanttobuy(Boolean wanttobuy) {
this.wanttobuy = wanttobuy;
}
public Boolean getWishlist() {
return wishlist;
}
public void setWishlist(Boolean wishlist) {
this.wishlist = wishlist;
}
public Integer getWishlistpriority() {
return wishlistpriority;
}
public void setWishlistpriority(Integer wishlistpriority) {
this.wishlistpriority = wishlistpriority;
}
public Boolean getPreordered() {
return preordered;
}
public void setPreordered(Boolean preordered) {
this.preordered = preordered;
}
public String getLastmodified() {
return lastmodified;
}
public void setLastmodified(String lastmodified) {
this.lastmodified = lastmodified;
}
// public Float getWeight() {
// return weight;
// }
//
// public void setWeight(Float weight) {
// this.weight = weight;
// }
}

+ 34
- 0
xyz.veronie.bgg.ui/src/xyz/veronie/bgg/ui/handlers/ExportResultHandler.java 파일 보기

@@ -0,0 +1,34 @@
package xyz.veronie.bgg.ui.handlers;
import org.eclipse.e4.core.di.annotations.Execute;
import xyz.veronie.bgg.result.Thing;
import xyz.veronie.bgg.result.ThingProvider;
import java.util.List;
import javax.inject.Inject;
import org.eclipse.e4.core.di.annotations.CanExecute;
public class ExportResultHandler {
@Inject
ThingProvider thingProvider;
@Execute
public void execute() {
List<Thing> things = thingProvider.getThings();
for (Thing thing : things) {
System.out.println(thing.toResultTxtLine());
}
}
@CanExecute
public boolean canExecute() {
return thingProvider != null;
}
}

+ 11
- 14
xyz.veronie.bgg.ui/src/xyz/veronie/bgg/ui/parts/BatMain.java 파일 보기

@@ -148,6 +148,16 @@ public class BatMain {
btnUndo.setEnabled(false);
btnExport = new Button(buttonRow, SWT.NONE);
btnExport.addMouseListener(new MouseAdapter() {
@Override
public void mouseUp(MouseEvent e) {
ParameterizedCommand cmd =
commandService.createCommand("xyz.veronie.bgg.ui.command.export", null);
if (handlerService.canExecute(cmd)){
handlerService.executeHandler(cmd);
}
}
});
btnExport.setImage(ResourceManager.getPluginImage("xyz.veronie.bgg.ui", "icons/export_nandeck_60x60.png"));
btnExport.setToolTipText("Export for nanDeck");
btnExport.setEnabled(false);
@@ -222,20 +232,7 @@ public class BatMain {
TableViewerColumn colThumbnail = createTableViewerColumn(Thing.ThumbHeader, 120, 0);
// colThumbnail.setLabelProvider(new ColumnLabelProvider() {
// @Override
// public Image getImage(Object element) {
// Thing t = (Thing) element;
// Image img = t.getThumbnail();
// return img;
// }
//
// @Override
// public String getText(Object element) {
// return "";
// }
//
// });
colThumbnail.setLabelProvider(new OwnerDrawLabelProvider() {
@Override
protected void measure(Event event, Object element) {


+ 0
- 6
xyz.veronie.bgg.ui/src/xyz/veronie/bgg/ui/parts/ThingListPart.java 파일 보기

@@ -11,12 +11,9 @@ import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import xyz.veronie.bgg.result.Thing;
import xyz.veronie.bgg.result.ThingDetailsComposite;
import xyz.veronie.bgg.types.EventConstants;
public class ThingListPart {
private ThingDetailsComposite thingDetailsComposite;
@PostConstruct
public void createControls(Composite parent) {
Composite main = new Composite(parent, SWT.FILL);
@@ -24,14 +21,11 @@ public class ThingListPart {
GridLayout layout = new GridLayout(2, false);
main.setLayout(layout);
thingDetailsComposite = new ThingDetailsComposite(main, SWT.BORDER);
}
@Inject
@Optional
private void selectedThingChanged(@UIEventTopic(EventConstants.TOPIC_THING_SELECTION) Thing thing) {
thingDetailsComposite.selectedThingChanged(thing);
}


불러오는 중...
취소
저장