From a9c95d0612a34dd0d79c076282f46a27e3a0787d Mon Sep 17 00:00:00 2001 From: Waverunner Date: Sat, 24 May 2014 19:15:27 -0400 Subject: [PATCH] Added new SUIWindow methods: addTableDataSource, addTableColumn, addTableRow, minor GuildMember variable additions --- src/resources/guild/Guild.java | 8 +++--- src/resources/guild/GuildMember.java | 27 ++++++++++++++++++++ src/services/GuildService.java | 5 ++++ src/services/sui/SUITableItem.java | 37 +++++++++++++++++++++++++++ src/services/sui/SUIWindow.java | 38 +++++++++++++++++++++++++++- 5 files changed, 110 insertions(+), 5 deletions(-) create mode 100644 src/services/sui/SUITableItem.java diff --git a/src/resources/guild/Guild.java b/src/resources/guild/Guild.java index 5ccc5b32..8173732c 100644 --- a/src/resources/guild/Guild.java +++ b/src/resources/guild/Guild.java @@ -59,10 +59,10 @@ public class Guild extends Delta implements Serializable, Comparable { public Guild() { } - public GuildMember addMember(long member) { - GuildMember permissions = new GuildMember(); - members.put(member, permissions); - return permissions; + public GuildMember addMember(long objID) { + GuildMember member = new GuildMember(); + members.put(objID, member); + return member; } public void sendGuildMail(String sender, String subject, String message) { diff --git a/src/resources/guild/GuildMember.java b/src/resources/guild/GuildMember.java index 2017bbe7..744f8c8e 100644 --- a/src/resources/guild/GuildMember.java +++ b/src/resources/guild/GuildMember.java @@ -27,6 +27,9 @@ import java.util.Map; public class GuildMember { private long objectId; private long joinTime; + private String profession; + private short level; + private String rank; // TODO: These might have to be moved to a new GuildRank class depending on how permissions worked for NGE //this works for now... Lack of NGE Guild Rank guides makes re-creation difficult (Ranks introduced Game Update 8: http://swg.wikia.com/wiki/Game_Update_8) private boolean mailPermission = false; @@ -131,6 +134,30 @@ public class GuildMember { this.disbandPermission = disbandPermission; } + public String getProfession() { + return profession; + } + + public void setProfession(String profession) { + this.profession = profession; + } + + public short getLevel() { + return level; + } + + public void setLevel(short level) { + this.level = level; + } + + public String getRank() { + return rank; + } + + public void setRank(String rank) { + this.rank = rank; + } + public Map getAllPermissions() { Map permissions = new HashMap(); permissions.put((long) 1, "@guild:permission_mail"); diff --git a/src/services/GuildService.java b/src/services/GuildService.java index 427aefaf..4276d288 100644 --- a/src/services/GuildService.java +++ b/src/services/GuildService.java @@ -132,6 +132,11 @@ public class GuildService implements INetworkDispatch { } }); } + member.setLevel(joinee.getLevel()); + if (joinee.getPlayerObject() != null) { + member.setProfession(core.playerService.getFormalProfessionName(joinee.getPlayerObject().getProfession())); + } + return member; } diff --git a/src/services/sui/SUITableItem.java b/src/services/sui/SUITableItem.java new file mode 100644 index 00000000..33d36578 --- /dev/null +++ b/src/services/sui/SUITableItem.java @@ -0,0 +1,37 @@ +package services.sui; + +import java.util.Vector; + +public class SUITableItem { + private Vector children = new Vector(); + private String itemName; + private int index; + + public SUITableItem() { } + + public SUITableItem(String itemName, int index) { + this.itemName = itemName; + this.setIndex(index); + } + + public Vector getChildren() { + return children; + } + public void setChildren(Vector children) { + this.children = children; + } + public String getItemName() { + return itemName; + } + public void setItemName(String itemName) { + this.itemName = itemName; + } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } +} diff --git a/src/services/sui/SUIWindow.java b/src/services/sui/SUIWindow.java index dd256ae2..0e75cf71 100644 --- a/src/services/sui/SUIWindow.java +++ b/src/services/sui/SUIWindow.java @@ -40,6 +40,7 @@ public class SUIWindow { private Map callbacks = new ConcurrentHashMap(); private Map javaCallbacks = new ConcurrentHashMap(); private Vector menuItems = new Vector(); + private Vector tableItems = new Vector(); public SUIWindow(String script, SWGObject owner, int windowId, SWGObject rangeObject, float maxDistance) { @@ -154,6 +155,21 @@ public class SUIWindow { } + public void addTableDataSource(String name, String value) { + + SUIWindowComponent component = new SUIWindowComponent(); + component.setType((byte) 8); // using 6 (addDataSource) doesn't allow setting of column titles in tables + + for(String str : name.split(":")) { + component.getNarrowParams().add(str); + } + + component.getWideParams().add(value); + + components.add(component); + + } + public void addListBoxMenuItem(String itemName, long objectId) { SUIListBoxItem menuItem = new SUIListBoxItem(itemName, objectId); @@ -164,8 +180,28 @@ public class SUIWindow { menuItems.add(menuItem); } + + public void addTableColumn(String itemName, String type) { + int index = tableItems.size(); + SUITableItem item = new SUITableItem(itemName, index); - + addTableDataSource("comp.TablePage.dataTable:Name", String.valueOf(index)); + setProperty("comp.TablePage.dataTable." + index + ":Label", itemName); + setProperty("comp.TablePage.dataTable." + index + ":Type", type); + + tableItems.add(item); + } + + public void addTableRow(String itemName) { + tableItems.forEach(column -> { + int index = column.getIndex(); + SUITableItem item = new SUITableItem(itemName, index); + addDataItem("comp.TablePage.dataTable." + index + ":Name", "data" + index); + setProperty("comp.TablePage.dataTable." + index + ".data" + index + ":Value", itemName); + column.getChildren().add(item); + }); + } + public int getWindowId() { return windowId; }