virtualcommons-svn Mailing List for Virtual Commons Experiment Software (Page 20)
Status: Beta
Brought to you by:
alllee
You can subscribe to this list here.
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(21) |
Aug
(31) |
Sep
(6) |
Oct
(15) |
Nov
(2) |
Dec
(9) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
(4) |
Feb
(6) |
Mar
(12) |
Apr
(52) |
May
(14) |
Jun
(19) |
Jul
(81) |
Aug
(115) |
Sep
(36) |
Oct
(88) |
Nov
(46) |
Dec
(58) |
2010 |
Jan
(52) |
Feb
(55) |
Mar
(48) |
Apr
(15) |
May
(5) |
Jun
(38) |
Jul
(27) |
Aug
(24) |
Sep
(28) |
Oct
(1) |
Nov
(2) |
Dec
(29) |
2011 |
Jan
(87) |
Feb
(39) |
Mar
(63) |
Apr
(42) |
May
(26) |
Jun
(53) |
Jul
(23) |
Aug
(43) |
Sep
(37) |
Oct
(25) |
Nov
(4) |
Dec
(7) |
2012 |
Jan
(73) |
Feb
(79) |
Mar
(62) |
Apr
(28) |
May
(12) |
Jun
(2) |
Jul
(9) |
Aug
(1) |
Sep
(8) |
Oct
|
Nov
(3) |
Dec
(3) |
2013 |
Jan
(8) |
Feb
(16) |
Mar
(38) |
Apr
(74) |
May
(62) |
Jun
(15) |
Jul
(49) |
Aug
(19) |
Sep
(9) |
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
(25) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Bitbucket <com...@bi...> - 2012-02-27 05:50:15
|
1 new commit in foraging: https://bitbucket.org/virtualcommons/foraging/changeset/b6b1f49dc6a1/ changeset: b6b1f49dc6a1 user: alllee date: 2012-02-27 06:50:12 summary: kwexpand affected #: 1 file diff -r 8740d4abed6e2bd085909cf78a7b7632666c721c -r b6b1f49dc6a167667e39b81d297e5c5163658b86 src/main/java/edu/asu/commons/foraging/data/AllDataProcessor.java --- a/src/main/java/edu/asu/commons/foraging/data/AllDataProcessor.java +++ b/src/main/java/edu/asu/commons/foraging/data/AllDataProcessor.java @@ -27,7 +27,7 @@ import edu.asu.commons.util.Utils; /** - * $Id: AllDataProcessor.java 526 2010-08-06 01:25:27Z alllee $ + * $Id$ * * Serializes all data in the save file into a CSV string format, ordered by time. * Repository URL: https://bitbucket.org/virtualcommons/foraging/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-27 05:49:49
|
1 new commit in foraging: https://bitbucket.org/virtualcommons/foraging/changeset/8740d4abed6e/ changeset: 8740d4abed6e user: alllee date: 2012-02-27 06:49:34 summary: removing 3d data processing affected #: 1 file diff -r 3ad91de30e0e6db2b91cac8144404b2b9d53c117 -r 8740d4abed6e2bd085909cf78a7b7632666c721c src/main/java/edu/asu/commons/foraging/data/AllDataProcessor.java --- a/src/main/java/edu/asu/commons/foraging/data/AllDataProcessor.java +++ b/src/main/java/edu/asu/commons/foraging/data/AllDataProcessor.java @@ -45,15 +45,10 @@ @Override public void process(SavedRoundData savedRoundData, PrintWriter writer) { RoundConfiguration roundConfiguration = (RoundConfiguration) savedRoundData.getRoundParameters(); - if (roundConfiguration.is2dExperiment()) { - processData2d(savedRoundData, writer); - } - else { - processData3d(savedRoundData, writer); - } + processData(savedRoundData, writer); } - private void processData2d(SavedRoundData savedRoundData, PrintWriter writer) { + private void processData(SavedRoundData savedRoundData, PrintWriter writer) { RoundConfiguration roundConfiguration = (RoundConfiguration) savedRoundData.getRoundParameters(); SortedSet<PersistableEvent> actions = savedRoundData.getActions(); ServerDataModel dataModel = (ServerDataModel) savedRoundData.getDataModel(); @@ -216,4 +211,4 @@ } } } -} \ No newline at end of file +} Repository URL: https://bitbucket.org/virtualcommons/foraging/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-27 05:32:25
|
2 new commits in foraging: https://bitbucket.org/virtualcommons/foraging/changeset/562c122bd77c/ changeset: 562c122bd77c user: alllee date: 2012-02-27 06:29:51 summary: keeping track of client movements and adding chat targets to all data processor - fixes issue #35 affected #: 1 file diff -r 366a904a852bcf0916fe60507c6d20f7408b4d8a -r 562c122bd77c3f71ed175a22b33ba947c5df4c35 src/main/java/edu/asu/commons/foraging/data/AllDataProcessor.java --- a/src/main/java/edu/asu/commons/foraging/data/AllDataProcessor.java +++ b/src/main/java/edu/asu/commons/foraging/data/AllDataProcessor.java @@ -22,6 +22,7 @@ import edu.asu.commons.foraging.model.GroupDataModel; import edu.asu.commons.foraging.model.Resource; import edu.asu.commons.foraging.model.ServerDataModel; +import edu.asu.commons.foraging.ui.Circle; import edu.asu.commons.net.Identifier; import edu.asu.commons.util.Utils; @@ -53,15 +54,18 @@ } private void processData2d(SavedRoundData savedRoundData, PrintWriter writer) { - // RoundConfiguration roundConfiguration = (RoundConfiguration) savedRoundData.getRoundParameters(); + RoundConfiguration roundConfiguration = (RoundConfiguration) savedRoundData.getRoundParameters(); SortedSet<PersistableEvent> actions = savedRoundData.getActions(); - ServerDataModel model = (ServerDataModel) savedRoundData.getDataModel(); - Map<Identifier, ClientMovementTokenCount> clientMovementTokenCounts = ClientMovementTokenCount.createMap(model); -// List<GroupDataModel> groups = new ArrayList<GroupDataModel>(model.getGroups()); - Map<Identifier, ClientData> clientDataMap = model.getClientDataMap(); + ServerDataModel dataModel = (ServerDataModel) savedRoundData.getDataModel(); + Map<Identifier, ClientMovementTokenCount> clientMovementTokenCounts = ClientMovementTokenCount.createMap(dataModel); + Map<Identifier, ClientData> clientDataMap = dataModel.getClientDataMap(); + boolean restrictedVisibility = roundConfiguration.isSubjectsFieldOfVisionEnabled(); + int radius = roundConfiguration.getViewSubjectsRadius(); + dataModel.reinitialize(); for (PersistableEvent event: actions) { if (event instanceof MovementEvent) { MovementEvent movementEvent = (MovementEvent) event; + dataModel.apply(movementEvent); ClientData clientData = clientDataMap.get(event.getId()); ClientMovementTokenCount client = clientMovementTokenCounts.get(event.getId()); client.moves++; @@ -101,9 +105,26 @@ else if (event instanceof ChatRequest) { ChatRequest request = (ChatRequest) event; Identifier sourceId = request.getSource(); - Identifier targetId = request.getTarget(); + StringBuilder targetStringBuilder = new StringBuilder(); String message = request.toString(); - String line = String.format("%s, %s, %s, %s", savedRoundData.toSecondString(event), sourceId, targetId, message); + if (restrictedVisibility) { + ClientData clientData = clientDataMap.get(event.getId()); + GroupDataModel group = clientData.getGroupDataModel(); + Circle circle = new Circle(clientData.getPoint(), radius); + targetStringBuilder.append('['); + for (Map.Entry<Identifier, Point> entry: group.getClientPositions().entrySet()) { + Identifier id = entry.getKey(); + Point position = entry.getValue(); + if (circle.contains(position)) { + targetStringBuilder.append(id).append(','); + } + } + targetStringBuilder.setCharAt(targetStringBuilder.length() - 1, ']'); + } + else { + targetStringBuilder.append(request.getTarget()); + } + String line = String.format("%s, %s, %s, %s", savedRoundData.toSecondString(event), sourceId, targetStringBuilder.toString(), message); System.err.println(line); writer.println(line); } https://bitbucket.org/virtualcommons/foraging/changeset/3ad91de30e0e/ changeset: 3ad91de30e0e user: alllee date: 2012-02-27 06:32:09 summary: commentary affected #: 2 files diff -r 562c122bd77c3f71ed175a22b33ba947c5df4c35 -r 3ad91de30e0e6db2b91cac8144404b2b9d53c117 src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java --- a/src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java +++ b/src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java @@ -177,6 +177,10 @@ return getBooleanProperty("subjects-field-of-vision", false); } + /** + * FIXME: rename for consistency, getSubjectsFieldOfVisionRadius() + * @return + */ public int getViewSubjectsRadius() { if (isSubjectsFieldOfVisionEnabled()) { return getIntProperty("view-subjects-radius", 6); diff -r 562c122bd77c3f71ed175a22b33ba947c5df4c35 -r 3ad91de30e0e6db2b91cac8144404b2b9d53c117 src/main/java/edu/asu/commons/foraging/model/ServerDataModel.java --- a/src/main/java/edu/asu/commons/foraging/model/ServerDataModel.java +++ b/src/main/java/edu/asu/commons/foraging/model/ServerDataModel.java @@ -334,11 +334,6 @@ } } - /** - * Resets this server data model by performing the following: - * - * 1. Sets event channel to a no-op event channel. - */ public void setNullEventChannel() { super.channel = new EventTypeChannel() { public void handle(Event event) { } @@ -350,7 +345,15 @@ group.resetResourceDistribution(); } } - + /** + * Reinitializes this server data model in preparation for a replay by: + * <ol> + * <li> Sets event channel to a no-op event channel.</li> + * <li> resets all group resource distributions </li> + * <li> reinitializes all client positions </li> + * </ol> + * FIXME: may be safer to return a clone() instead? + */ public void reinitialize() { setNullEventChannel(); resetGroupResourceDistributions(); Repository URL: https://bitbucket.org/virtualcommons/foraging/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <iss...@bi...> - 2012-02-25 07:40:58
|
--- you can reply above this line --- New issue 35: set up sentry https://bitbucket.org/virtualcommons/vcweb/issue/35/set-up-sentry A Lee / alllee on Sat, 25 Feb 2012 08:40:51 +0100: Description: configure / install sentry on production Responsible: alllee -- This is an issue notification from bitbucket.org. You are receiving this either because you are the owner of the issue, or you are following the issue. |
From: Bitbucket <com...@bi...> - 2012-02-24 00:17:32
|
5 new commits in irrigation: https://bitbucket.org/virtualcommons/irrigation/changeset/75afdb421872/ changeset: 75afdb421872 user: alllee date: 2012-02-24 01:14:12 summary: adding facilitator debriefing template and helper methods to RoundConfiguration / ServerConfiguration affected #: 2 files diff -r 3cc04bd7027cd7c764542f1228500c17fd3fb2ff -r 75afdb421872e317a55e3836973423a04fd98fcc src/main/java/edu/asu/commons/irrigation/conf/RoundConfiguration.java --- a/src/main/java/edu/asu/commons/irrigation/conf/RoundConfiguration.java +++ b/src/main/java/edu/asu/commons/irrigation/conf/RoundConfiguration.java @@ -7,6 +7,7 @@ import edu.asu.commons.conf.ExperimentRoundParameters; import edu.asu.commons.irrigation.client.ClientDataModel; import edu.asu.commons.irrigation.model.ClientData; +import edu.asu.commons.irrigation.model.ServerDataModel; import edu.asu.commons.util.Duration; /** @@ -177,7 +178,7 @@ private void populateClientEarnings(ClientData data, ServerConfiguration serverConfiguration, NumberFormat currencyFormatter) { data.setGrandTotalIncome(currencyFormatter.format(serverConfiguration.getTotalIncome(data))); - data.setTotalDollarsEarnedThisRound(currencyFormatter.format(serverConfiguration.getTotalTokenEarnings(data))); + data.setTotalDollarsEarnedThisRound(currencyFormatter.format(serverConfiguration.getTokenEarningsThisRound(data))); data.setQuizEarnings(currencyFormatter.format(serverConfiguration.getQuizEarnings(data))); } @@ -240,4 +241,15 @@ return template.render(); } + public String generateFacilitatorDebriefing(ServerDataModel serverDataModel) { + ST template = createStringTemplate(getProperty("facilitator-debriefing")); + ServerConfiguration serverConfiguration = getParentConfiguration(); + NumberFormat formatter = NumberFormat.getCurrencyInstance(); + for (ClientData data: serverDataModel.getClientDataMap().values()) { + populateClientEarnings(data, serverConfiguration, formatter); + } + template.add("clientDataList", serverDataModel.getClientDataMap().values()); + return template.render(); + } + } diff -r 3cc04bd7027cd7c764542f1228500c17fd3fb2ff -r 75afdb421872e317a55e3836973423a04fd98fcc src/main/java/edu/asu/commons/irrigation/conf/ServerConfiguration.java --- a/src/main/java/edu/asu/commons/irrigation/conf/ServerConfiguration.java +++ b/src/main/java/edu/asu/commons/irrigation/conf/ServerConfiguration.java @@ -61,9 +61,7 @@ private final static String[] PRIORITY_STRINGS = { "A", "B", "C", "D", "E" }; - - - public String toPriorityString(int clientPriority) { + public static String toPriorityString(int clientPriority) { // bounds check if (clientPriority >= 0 && clientPriority < PRIORITY_STRINGS.length) { return PRIORITY_STRINGS[clientPriority]; @@ -110,6 +108,10 @@ return data.getTotalTokens() * getDollarsPerToken(); } + public double getTokenEarningsThisRound(ClientData data) { + return data.getAllTokensEarnedThisRound() * getDollarsPerToken(); + } + public double getQuizEarnings(ClientData data) { return data.getCorrectQuizAnswers() * getQuizCorrectAnswerReward(); } https://bitbucket.org/virtualcommons/irrigation/changeset/c3138ee991dc/ changeset: c3138ee991dc user: alllee date: 2012-02-24 01:14:44 summary: replacing getPriorityString() implementation with ServerConfiguration static method and adding toString() affected #: 1 file diff -r 75afdb421872e317a55e3836973423a04fd98fcc -r c3138ee991dc6dce71deaccce2833f8d642b45e7 src/main/java/edu/asu/commons/irrigation/model/ClientData.java --- a/src/main/java/edu/asu/commons/irrigation/model/ClientData.java +++ b/src/main/java/edu/asu/commons/irrigation/model/ClientData.java @@ -79,16 +79,8 @@ return getAssignedNumber() - 1; } - // FIXME: logic duplicated with ServerConfiguration.toPriorityString(int priority); - private final static String[] PRIORITY_STRINGS = { "A", "B", "C", "D", "E" }; - public String getPriorityString() { - // bounds check - int priority = getPriority(); - if (priority >= 0 && priority < PRIORITY_STRINGS.length) { - return PRIORITY_STRINGS[priority]; - } - return "Position not found"; + return ServerConfiguration.toPriorityString(getPriority()); } public void openGate(){ @@ -262,6 +254,11 @@ public int compareTo(ClientData o) { return Integer.valueOf(assignedNumber).compareTo(o.assignedNumber); } + + @Override + public String toString() { + return String.format("%s Position %s", id, getPriorityString()); + } } https://bitbucket.org/virtualcommons/irrigation/changeset/d7a67c00d0bb/ changeset: d7a67c00d0bb user: alllee date: 2012-02-24 01:15:43 summary: cleaning up canal rendering a bit, avoiding range errors when < 5 clients are present in a group. affected #: 1 file diff -r c3138ee991dc6dce71deaccce2833f8d642b45e7 -r d7a67c00d0bb57083f1dc66356a9da9901e55b25 src/main/java/edu/asu/commons/irrigation/client/CanalPanel.java --- a/src/main/java/edu/asu/commons/irrigation/client/CanalPanel.java +++ b/src/main/java/edu/asu/commons/irrigation/client/CanalPanel.java @@ -49,7 +49,7 @@ private int reservoirWidth = 100; - private double canalHeightMultiplier = 1.2d; + private double canalHeightMultiplier = 0.8d; private int gateBuffer = 20; @@ -99,23 +99,21 @@ graphics2D.setColor(Color.BLUE); graphics2D.fillRect(0, 0, reservoirHeight, reservoirWidth); - // draws the canal leading up to the gates - for (int i = 0; i < NUMBER_OF_GATES - 1; i++) { - ClientData clientData = sortedClientDataList.get(i); + for (ClientData clientData : sortedClientDataList) { + int priority = clientData.getPriority(); + Gate gate = gates[priority]; + // draw the irrigation canal if (clientDataModel.getClientData().isDownstreamAndOutOfRange(clientData)) { graphics2D.setColor(Color.WHITE); - graphics2D.fillRect(gates[i].getX(), gates[i].getY(), - gates[i].getWidth(), gates[i].getHeight()); + graphics2D.fillRect(gate.getX(), gate.getY(), + gate.getWidth(), gate.getHeight()); } else { graphics2D.setColor(Color.BLUE); - graphics2D.fillRect(gates[i].getX(), gates[i].getY(), - gates[i].getWidth(), gates[i].getHeight()); + graphics2D.fillRect(gate.getX(), gate.getY(), + gate.getWidth(), gate.getHeight()); } - } - for (ClientData clientData : sortedClientDataList) { - int priority = clientData.getPriority(); - Gate gate = gates[priority]; + // draw the irrigation gate inlets if (clientDataModel.getClientData().isImmediateNeighbor(clientData)) { graphics2D.setColor(Color.BLUE); graphics2D.fillRect(gate.getOpeningsX(), gate.getOpeningsY(), https://bitbucket.org/virtualcommons/irrigation/changeset/cb612fe975b9/ changeset: cb612fe975b9 user: alllee date: 2012-02-24 01:16:37 summary: adding facilitator message event support affected #: 2 files diff -r d7a67c00d0bb57083f1dc66356a9da9901e55b25 -r cb612fe975b97f64190351dddcbfffda6d6f178c src/main/java/edu/asu/commons/irrigation/facilitator/Facilitator.java --- a/src/main/java/edu/asu/commons/irrigation/facilitator/Facilitator.java +++ b/src/main/java/edu/asu/commons/irrigation/facilitator/Facilitator.java @@ -1,7 +1,5 @@ package edu.asu.commons.irrigation.facilitator; -import java.awt.Dimension; - import javax.swing.JFrame; import javax.swing.SwingUtilities; @@ -9,12 +7,14 @@ import edu.asu.commons.event.BeginRoundRequest; import edu.asu.commons.event.EndRoundRequest; import edu.asu.commons.event.EventTypeProcessor; +import edu.asu.commons.event.FacilitatorMessageEvent; import edu.asu.commons.facilitator.BaseFacilitator; import edu.asu.commons.irrigation.conf.RoundConfiguration; import edu.asu.commons.irrigation.conf.ServerConfiguration; import edu.asu.commons.irrigation.events.FacilitatorEndRoundEvent; import edu.asu.commons.irrigation.events.RegistrationEvent; import edu.asu.commons.irrigation.model.ServerDataModel; +import edu.asu.commons.ui.UserInterfaceUtils; /** * $Id$ @@ -38,16 +38,24 @@ private void initializeEventProcessors() { addEventProcessor(new EventTypeProcessor<RegistrationEvent>(RegistrationEvent.class) { + @Override public void handle(RegistrationEvent registrationEvent) { facilitatorWindow.addInstructions(registrationEvent.getRoundConfiguration().getInstructions()); } }); addEventProcessor(new EventTypeProcessor<FacilitatorEndRoundEvent>(FacilitatorEndRoundEvent.class) { + @Override public void handle(FacilitatorEndRoundEvent event) { facilitatorWindow.endRound(event); getServerConfiguration().nextRound(); } }); + addEventProcessor(new EventTypeProcessor<FacilitatorMessageEvent>(FacilitatorMessageEvent.class) { + @Override + public void handle(FacilitatorMessageEvent event) { + facilitatorWindow.addMessage(event.toString()); + } + }); } void initialize() { @@ -59,18 +67,13 @@ public static void main(String[] args) { Runnable createGuiRunnable = new Runnable() { public void run() { - Dimension dimension = new Dimension(800, 600); Facilitator facilitator = new Facilitator(); facilitator.initialize(); facilitator.connect(); JFrame frame = new JFrame(); frame.setTitle("Facilitator window: " + facilitator.getId()); - frame.setPreferredSize(dimension); - - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.getContentPane().add(facilitator.getFacilitatorWindow()); - frame.pack(); - frame.setVisible(true); + frame.add(facilitator.getFacilitatorWindow()); + UserInterfaceUtils.maximize(frame); } }; SwingUtilities.invokeLater(createGuiRunnable); diff -r d7a67c00d0bb57083f1dc66356a9da9901e55b25 -r cb612fe975b97f64190351dddcbfffda6d6f178c src/main/java/edu/asu/commons/irrigation/server/IrrigationServer.java --- a/src/main/java/edu/asu/commons/irrigation/server/IrrigationServer.java +++ b/src/main/java/edu/asu/commons/irrigation/server/IrrigationServer.java @@ -112,16 +112,23 @@ @Override public void handle(BeginRoundRequest event) { if (! event.getId().equals(getFacilitatorId())) { - getLogger().warning( - String.format("facilitator is [%s] but received begin round request from non-facilitator [%s]", getFacilitatorId(), event.getId())); + sendFacilitatorMessage( + String.format("facilitator is [%s] but received begin round request from non-facilitator [%s]", + getFacilitatorId(), event.getId())); return; } // ignore the request if not every group has submit their tokens. if (isTokenInvestmentComplete()) { + sendFacilitatorMessage("Starting round."); synchronized (roundSignal) { roundSignal.notifyAll(); } } + else { + sendFacilitatorMessage( + String.format("Cannot start round, %d of %d clients have submitted token investments", + submittedClients, clients.size())); + } } }); addEventProcessor(new EventTypeProcessor<EndRoundRequest>(EndRoundRequest.class) { @@ -176,12 +183,9 @@ @Override public void handle(SocketIdentifierUpdateRequest request) { SocketIdentifier socketId = request.getSocketIdentifier(); - //getLogger().info("socket id from client: " + socketId); - //getLogger().info("station number from client: " + socketId.getStationNumber()); - //getLogger().info("station number from event: " + request.getStationNumber()); ClientData clientData = clients.get(socketId); if (clientData == null) { - getLogger().warning("No client data available for socket: " + socketId); + sendFacilitatorMessage("No client data available for socket: " + socketId); return; } SocketIdentifier clientSocketId = (SocketIdentifier) clientData.getId(); @@ -191,7 +195,7 @@ addEventProcessor(new EventTypeProcessor<ConnectionEvent>(ConnectionEvent.class) { @Override public void handle(ConnectionEvent event) { - getLogger().info("incoming connection: " + event); + sendFacilitatorMessage("incoming connection: " + event); // handle incoming connections Identifier identifier = event.getId(); ClientData clientData = new ClientData(identifier); @@ -205,7 +209,7 @@ addEventProcessor(new EventTypeProcessor<DisconnectionRequest>(DisconnectionRequest.class) { @Override public void handle(DisconnectionRequest request) { - getLogger().warning("irrigation server handling disconnection request: " + request); + sendFacilitatorMessage("irrigation server handling disconnection request: " + request); Identifier disconnectedClientId = request.getId(); if (disconnectedClientId.equals(getFacilitatorId())) { getLogger().warning("Disconnecting facilitator."); @@ -226,7 +230,7 @@ ClientData sendingClient = clients.get(source); if (Identifier.ALL.equals(target)) { // relay to all clients in this client's group. - sendFacilitatorMessage(String.format("%s sending [ %s ] to all group participants", request.getSource(), request)); + sendFacilitatorMessage(String.format("%s -> ALL: [ %s ]", request.getSource(), request)); boolean restrictedVisibility = getRoundConfiguration().isRestrictedVisibility(); for (ClientData clientData: clients.get(source).getGroupDataModel().getClientDataMap().values()) { Identifier targetId = clientData.getId(); @@ -234,7 +238,7 @@ continue; } if (restrictedVisibility && ! sendingClient.isImmediateNeighbor(clientData)) { - sendFacilitatorMessage(String.format("%s out of range of %s, not sending message [%s]", clientData, sendingClient, request.getMessage())); + sendFacilitatorMessage(String.format("%s was out of range of %s, not sending message [%s]", clientData, sendingClient, request.getMessage())); continue; } ChatEvent chatEvent = new ChatEvent(targetId, request.getMessage(), source, true); @@ -242,7 +246,7 @@ } } else { - getLogger().info(String.format("%s sending [%s] to target [%s]", request.getSource(), request, request.getTarget())); + sendFacilitatorMessage(String.format("%s->%s: [%s]", request.getSource(), request.getTarget(), request.toString())); ChatEvent chatEvent = new ChatEvent(request.getTarget(), request.getMessage(), request.getSource()); transmit(chatEvent); } @@ -253,7 +257,7 @@ @Override public void handle(InvestedTokensEvent event) { if (isTokenInvestmentComplete()) { - getLogger().severe("Trying to invest more tokens but token investment is already complete:" + event); + sendFacilitatorMessage("Trying to invest more tokens but token investment is already complete:" + event); return; } clients.get(event.getId()).setInvestedTokens(event.getInvestedTokens()); @@ -262,6 +266,7 @@ // everyone's submitted their tokens so we can calculate the available bandwidth and // notify each client initializeInfrastructureEfficiency(); + sendFacilitatorMessage("Token investment is complete, ready to start the round."); } } }); https://bitbucket.org/virtualcommons/irrigation/changeset/84f2fd3f32f8/ changeset: 84f2fd3f32f8 user: alllee date: 2012-02-24 01:17:18 summary: replacing facilitator debriefing with StringTemplate affected #: 3 files diff -r cb612fe975b97f64190351dddcbfffda6d6f178c -r 84f2fd3f32f88e70e3bd87b0285f7fb32ef55f9d src/main/java/edu/asu/commons/irrigation/facilitator/FacilitatorWindow.java --- a/src/main/java/edu/asu/commons/irrigation/facilitator/FacilitatorWindow.java +++ b/src/main/java/edu/asu/commons/irrigation/facilitator/FacilitatorWindow.java @@ -4,9 +4,6 @@ import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.HashMap; -import java.util.Map; -import java.util.TreeSet; import javax.swing.BoxLayout; import javax.swing.JButton; @@ -22,10 +19,7 @@ import edu.asu.commons.irrigation.events.FacilitatorEndRoundEvent; import edu.asu.commons.irrigation.events.ShowGameScreenshotRequest; import edu.asu.commons.irrigation.events.ShowQuizRequest; -import edu.asu.commons.irrigation.model.ClientData; -import edu.asu.commons.irrigation.model.GroupDataModel; import edu.asu.commons.irrigation.model.ServerDataModel; -import edu.asu.commons.net.Identifier; import edu.asu.commons.ui.HtmlEditorPane; import edu.asu.commons.ui.UserInterfaceUtils; @@ -215,33 +209,9 @@ * @return */ public void endRound(FacilitatorEndRoundEvent event) { - builder = new StringBuilder(); ServerDataModel model = event.getServerDataModel(); - builder.append("<h3>Facilitator Debriefing:</h3>"); - builder.append("<table><thead><th>Participant</th><th>Current tokens</th><th>Current Income</th><th>Total Income</th></thead><tbody>"); - Map<Identifier, ClientData> clientDataMap = new HashMap<Identifier, ClientData>(); - for (GroupDataModel group: model.getAllGroupDataModels()) { - clientDataMap.putAll(group.getClientDataMap()); - } - TreeSet<Identifier> orderedSet = new TreeSet<Identifier>(clientDataMap.keySet()); - for (Identifier clientId : orderedSet) { - ClientData data = clientDataMap.get(clientId); - // FIXME: hack... inject the configuration into the client data so that getIncome() will return something appropriate. - // should just refactor getIncome or remove it from ClientData entirely. - builder.append(String.format( - "<tr><td>%s</td>" + - "<td align='center'>%d</td>" + - "<td align='center'>$%3.2f</td>" + - "<td align='center'>$%3.2f</td></tr>", - clientId.toString(), - data.getAllTokensEarnedThisRound(), - data.getAllTokensEarnedThisRound() * model.getRoundConfiguration().getDollarsPerToken(), - data.getTotalTokens() * model.getRoundConfiguration().getDollarsPerToken()+ facilitator.getServerConfiguration().getShowUpPayment())); - } - builder.append("</tbody></table><hr>"); - if (event.isLastRound()) { - builder.append("<h2><font color='blue'>The experiment is over. Please prepare payments.</font></h2>"); - } + builder = new StringBuilder(model.generateFacilitatorDebriefing()); + setText(builder.toString()); } diff -r cb612fe975b97f64190351dddcbfffda6d6f178c -r 84f2fd3f32f88e70e3bd87b0285f7fb32ef55f9d src/main/java/edu/asu/commons/irrigation/model/ServerDataModel.java --- a/src/main/java/edu/asu/commons/irrigation/model/ServerDataModel.java +++ b/src/main/java/edu/asu/commons/irrigation/model/ServerDataModel.java @@ -79,6 +79,16 @@ GroupDataModel group = clientsToGroups.get(clientId); return group.getClientDataMap(); } + + public Map<Identifier, ClientData> getClientDataMap() { + Map<Identifier, ClientData> clientDataMap = new HashMap<Identifier, ClientData>(); + for (Map.Entry<Identifier, GroupDataModel> entry : clientsToGroups.entrySet()) { + Identifier id = entry.getKey(); + GroupDataModel group = entry.getValue(); + clientDataMap.put(id, group.getClientData(id)); + } + return clientDataMap; + } public void clear() { for (Iterator<GroupDataModel> iter = clientsToGroups.values().iterator(); iter.hasNext(); ) { @@ -114,4 +124,8 @@ public ServerConfiguration getExperimentConfiguration() { return roundConfiguration.getParentConfiguration(); } + + public String generateFacilitatorDebriefing() { + return roundConfiguration.generateFacilitatorDebriefing(this); + } } diff -r cb612fe975b97f64190351dddcbfffda6d6f178c -r 84f2fd3f32f88e70e3bd87b0285f7fb32ef55f9d src/main/resources/configuration/asu/2011/pretest/irrigation.xml --- a/src/main/resources/configuration/asu/2011/pretest/irrigation.xml +++ b/src/main/resources/configuration/asu/2011/pretest/irrigation.xml @@ -408,11 +408,12 @@ You are in position {clientData.priorityString} and received {clientData.totalDollarsEarnedThisRound} this past round. Your <b>total income</b> is <b>{clientData.grandTotalIncome}</b>, including - the {showUpPayment} show-up bonus - {if (clientData.quizEarnings)} - and {clientData.quizEarnings} for answering {clientData.correctQuizAnswers} quiz questions correctly - {endif} + the {showUpPayment} show-up bonus and {clientData.quizEarnings} for + answering {clientData.correctQuizAnswers} quiz questions correctly. </p> + {if (self.practiceRound)} + <p><b>NOTE: this was a practice round and did not contribute to your earnings.</b></p> + {endif} {if (showExitInstructions)} <h2>Exit Survey</h2><hr> @@ -489,4 +490,19 @@ <entry key="restricted-visibility-instructions"><![CDATA[{if (self.restrictedVisibility)}<b>NOTE:</b> In this experiment you can <b>only communicate with and observe the actions of your immediate neighbors</b>.{endif}]]></entry> +<entry key="facilitator-debriefing"> +<![CDATA[ +<h3>Round {self.roundNumber} results</h3> +<hr> +<table border=1 cellspacing=3 cellpadding=3> +<tr><th>Participant</th><th>Current tokens</th><th>Current income</th><th>Quiz earnings</th><th>Total income</th></tr> +{clientDataList: {data | +<tr align="RIGHT"><td>{data.id}</td><td>{data.allTokensEarnedThisRound}</td><td>{data.totalDollarsEarnedThisRound}</td><td>{data.quizEarnings}</td><td>{data.grandTotalIncome}</td></tr> +}} +</table> +{if (self.lastRound)} +<h2><font color='blue'>The experiment is over. Please prepare payments.</font></h2> +{endif} +]]> +</entry></properties> Repository URL: https://bitbucket.org/virtualcommons/irrigation/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-23 19:50:17
|
4 new commits in irrigation: https://bitbucket.org/virtualcommons/irrigation/changeset/4e1d4cc541b4/ changeset: 4e1d4cc541b4 user: alllee date: 2012-02-23 20:47:03 summary: marking ClientData as Comparable based on assigned number (priority) and adding a simple method to determine whether or not other client data objects are downstream and out of range (currently hard-coded to a field of vision of 1) affected #: 1 file diff -r 64a05a84e892be11cc5cc56ea6e7e71ba4d6fc4d -r 4e1d4cc541b4f8e80ffebbc40f9010a000695759 src/main/java/edu/asu/commons/irrigation/model/ClientData.java --- a/src/main/java/edu/asu/commons/irrigation/model/ClientData.java +++ b/src/main/java/edu/asu/commons/irrigation/model/ClientData.java @@ -20,7 +20,7 @@ * @version $Revision$ */ -public class ClientData implements Serializable { +public class ClientData implements Serializable, Comparable<ClientData> { private static final long serialVersionUID = 5281922601551921005L; @@ -209,10 +209,14 @@ } public boolean isImmediateNeighbor(ClientData otherClientData) { - int thisPosition = getPriority(); - int otherPosition = otherClientData.getPriority(); + int thisPosition = getAssignedNumber(); + int otherPosition = otherClientData.getAssignedNumber(); return (thisPosition == otherPosition) || (thisPosition == otherPosition + 1) || (thisPosition == otherPosition - 1); } + + public boolean isDownstreamAndOutOfRange(ClientData other) { + return assignedNumber < other.assignedNumber - 1; + } public int getCorrectQuizAnswers() { return correctQuizAnswers; @@ -253,6 +257,11 @@ public void addCorrectQuizAnswers(int numberOfCorrectQuizAnswers) { this.correctQuizAnswers += numberOfCorrectQuizAnswers; } + + @Override + public int compareTo(ClientData o) { + return Integer.valueOf(assignedNumber).compareTo(o.assignedNumber); + } } https://bitbucket.org/virtualcommons/irrigation/changeset/b46d8279779c/ changeset: b46d8279779c user: alllee date: 2012-02-23 20:47:22 summary: ClientData is now Comparable, no need for a custom Comparator affected #: 1 file diff -r 4e1d4cc541b4f8e80ffebbc40f9010a000695759 -r b46d8279779c211189a4467741361b94a36ba709 src/main/java/edu/asu/commons/irrigation/client/ClientDataModel.java --- a/src/main/java/edu/asu/commons/irrigation/client/ClientDataModel.java +++ b/src/main/java/edu/asu/commons/irrigation/client/ClientDataModel.java @@ -2,7 +2,6 @@ import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.List; import java.util.Map; @@ -114,12 +113,7 @@ public List<ClientData> getClientDataSortedByPriority() { Map<Identifier, ClientData> clientDataMap = getClientDataMap(); ArrayList<ClientData> clientDataList = new ArrayList<ClientData>(clientDataMap.values()); - // sort by priority - Collections.sort(clientDataList, new Comparator<ClientData>() { - public int compare(ClientData a, ClientData b) { - return Integer.valueOf(a.getPriority()).compareTo(b.getPriority()); - } - }); + Collections.sort(clientDataList); return clientDataList; } https://bitbucket.org/virtualcommons/irrigation/changeset/ec9eb5bfd1a7/ changeset: ec9eb5bfd1a7 user: alllee date: 2012-02-23 20:49:06 summary: fixes #15 and fixes #16 affected #: 1 file diff -r b46d8279779c211189a4467741361b94a36ba709 -r ec9eb5bfd1a7f580118660601bc368afece45a94 src/main/java/edu/asu/commons/irrigation/client/CanalPanel.java --- a/src/main/java/edu/asu/commons/irrigation/client/CanalPanel.java +++ b/src/main/java/edu/asu/commons/irrigation/client/CanalPanel.java @@ -49,7 +49,7 @@ private int reservoirWidth = 100; - private double canalHeightMultiplier = 0.8; + private double canalHeightMultiplier = 1.2d; private int gateBuffer = 20; @@ -102,13 +102,13 @@ // draws the canal leading up to the gates for (int i = 0; i < NUMBER_OF_GATES - 1; i++) { ClientData clientData = sortedClientDataList.get(i); - if (clientDataModel.getClientData().isImmediateNeighbor(clientData)) { - graphics2D.setColor(Color.BLUE); + if (clientDataModel.getClientData().isDownstreamAndOutOfRange(clientData)) { + graphics2D.setColor(Color.WHITE); graphics2D.fillRect(gates[i].getX(), gates[i].getY(), gates[i].getWidth(), gates[i].getHeight()); } else { - graphics2D.setColor(Color.GRAY); + graphics2D.setColor(Color.BLUE); graphics2D.fillRect(gates[i].getX(), gates[i].getY(), gates[i].getWidth(), gates[i].getHeight()); } @@ -126,9 +126,11 @@ } } - graphics2D.setColor(Color.BLUE); - graphics2D.fillRect(gates[5].getX(), gates[5].getY(), 10, - gates[5].getHeight()); + // FIXME: hard coded check for last downstream participant + if (clientDataModel.getClientData().getPriority() == 4) { + graphics2D.setColor(Color.BLUE); + graphics2D.fillRect(gates[5].getX(), gates[5].getY(), 10, gates[5].getHeight()); + } // particle system animation logic for the balls graphics.setColor(Color.WHITE); https://bitbucket.org/virtualcommons/irrigation/changeset/3cc04bd7027c/ changeset: 3cc04bd7027c user: alllee date: 2012-02-23 20:50:01 summary: refactoring: extending csidex BaseFacilitator for common functionality affected #: 2 files diff -r ec9eb5bfd1a7f580118660601bc368afece45a94 -r 3cc04bd7027cd7c764542f1228500c17fd3fb2ff src/main/java/edu/asu/commons/irrigation/facilitator/Facilitator.java --- a/src/main/java/edu/asu/commons/irrigation/facilitator/Facilitator.java +++ b/src/main/java/edu/asu/commons/irrigation/facilitator/Facilitator.java @@ -1,7 +1,6 @@ package edu.asu.commons.irrigation.facilitator; import java.awt.Dimension; -import java.net.InetSocketAddress; import javax.swing.JFrame; import javax.swing.SwingUtilities; @@ -9,20 +8,13 @@ import edu.asu.commons.event.BeginExperimentRequest; import edu.asu.commons.event.BeginRoundRequest; import edu.asu.commons.event.EndRoundRequest; -import edu.asu.commons.event.Event; -import edu.asu.commons.event.EventChannel; -import edu.asu.commons.event.EventChannelFactory; import edu.asu.commons.event.EventTypeProcessor; -import edu.asu.commons.event.FacilitatorRegistrationRequest; +import edu.asu.commons.facilitator.BaseFacilitator; import edu.asu.commons.irrigation.conf.RoundConfiguration; import edu.asu.commons.irrigation.conf.ServerConfiguration; import edu.asu.commons.irrigation.events.FacilitatorEndRoundEvent; import edu.asu.commons.irrigation.events.RegistrationEvent; import edu.asu.commons.irrigation.model.ServerDataModel; -import edu.asu.commons.net.ClientDispatcher; -import edu.asu.commons.net.DispatcherFactory; -import edu.asu.commons.net.Identifier; -import edu.asu.commons.net.SocketIdentifier; /** * $Id$ @@ -31,83 +23,39 @@ * @author <a href='mailto:All...@as...'>Allen Lee</a>, Sanket Joshi * @version $Rev$ */ -public class Facilitator { +public class Facilitator extends BaseFacilitator<ServerConfiguration, RoundConfiguration> { - private Identifier id; - - private ClientDispatcher dispatcher; - - private ServerConfiguration configuration; - - private ServerDataModel serverDataModel; // @jve:decl-index=0: - + private ServerDataModel serverDataModel; private FacilitatorWindow facilitatorWindow; - - private final EventChannel channel = EventChannelFactory.create(); - + private Facilitator() { this(new ServerConfiguration()); } public Facilitator(ServerConfiguration configuration) { - dispatcher = DispatcherFactory.getInstance().createClientDispatcher(channel, configuration); - setConfiguration(configuration); + super(configuration); } private void initializeEventProcessors() { - channel.add(this, new EventTypeProcessor<RegistrationEvent>(RegistrationEvent.class) { + addEventProcessor(new EventTypeProcessor<RegistrationEvent>(RegistrationEvent.class) { public void handle(RegistrationEvent registrationEvent) { facilitatorWindow.addInstructions(registrationEvent.getRoundConfiguration().getInstructions()); } }); - channel.add(this, new EventTypeProcessor<FacilitatorEndRoundEvent>(FacilitatorEndRoundEvent.class) { + addEventProcessor(new EventTypeProcessor<FacilitatorEndRoundEvent>(FacilitatorEndRoundEvent.class) { public void handle(FacilitatorEndRoundEvent event) { facilitatorWindow.endRound(event); - configuration.nextRound(); + getServerConfiguration().nextRound(); } }); } - public void setConfiguration(ServerConfiguration configuration) { - if (configuration == null) { - System.err.println("attempt to setConfiguration with null, ignoring"); - return; - } - else { - this.configuration = configuration; - } - } - - /* - * Connects facilitator to the server and registers with the server as a facilitator. - * - * If the connection was successful, configures the FacilitatorWindow to manage experiments, - * otherwise configures the FacilitatorWindow to replay experiments and view configuration - * for those experiments. - */ - public void connect() { - connect(configuration.getServerAddress()); - } - - public void connect(InetSocketAddress address) { - id = dispatcher.connect(address); - SocketIdentifier socketId = (SocketIdentifier) id; - transmit(new FacilitatorRegistrationRequest(socketId)); - } - void initialize() { facilitatorWindow = new FacilitatorWindow(this); - facilitatorWindow.setText(configuration.getFacilitatorInstructions()); + facilitatorWindow.setText(getServerConfiguration().getFacilitatorInstructions()); initializeEventProcessors(); } - /* - * Sends requests to the server - */ - public void transmit(Event event) { - dispatcher.transmit(event); - } - public static void main(String[] args) { Runnable createGuiRunnable = new Runnable() { public void run() { @@ -116,7 +64,7 @@ facilitator.initialize(); facilitator.connect(); JFrame frame = new JFrame(); - frame.setTitle("Facilitator window: " + facilitator.id); + frame.setTitle("Facilitator window: " + facilitator.getId()); frame.setPreferredSize(dimension); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); @@ -129,38 +77,30 @@ } void sendStartRoundOverride(){ - transmit(new BeginExperimentRequest(id)); + transmit(new BeginExperimentRequest(getId())); } /* * Send a request to start a round */ public void sendBeginRoundRequest() { - transmit(new BeginRoundRequest(id)); + transmit(new BeginRoundRequest(getId())); } public void sendEndRoundRequest() { - transmit(new EndRoundRequest(id)); + transmit(new EndRoundRequest(getId())); } public FacilitatorWindow getFacilitatorWindow() { return facilitatorWindow; } - public Identifier getId(){ - return id; - } - public ServerDataModel getServerDataModel(){ return serverDataModel; } - public ServerConfiguration getConfiguration(){ - return configuration; - } - public RoundConfiguration getCurrentRoundConfiguration() { - return configuration.getCurrentParameters(); + return getServerConfiguration().getCurrentParameters(); } public void setServerDataModel(ServerDataModel serverGameState) { diff -r ec9eb5bfd1a7f580118660601bc368afece45a94 -r 3cc04bd7027cd7c764542f1228500c17fd3fb2ff src/main/java/edu/asu/commons/irrigation/facilitator/FacilitatorWindow.java --- a/src/main/java/edu/asu/commons/irrigation/facilitator/FacilitatorWindow.java +++ b/src/main/java/edu/asu/commons/irrigation/facilitator/FacilitatorWindow.java @@ -1,6 +1,7 @@ package edu.asu.commons.irrigation.facilitator; import java.awt.BorderLayout; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashMap; @@ -9,9 +10,12 @@ import javax.swing.BoxLayout; import javax.swing.JButton; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; +import javax.swing.JSplitPane; import javax.swing.SwingUtilities; +import javax.swing.text.BadLocationException; import edu.asu.commons.event.ShowInstructionsRequest; import edu.asu.commons.irrigation.events.BeginChatRoundRequest; @@ -43,8 +47,9 @@ private JButton beginChatButton; - private HtmlEditorPane editorPane; - private JScrollPane scrollPane; + private HtmlEditorPane informationEditorPane; + private HtmlEditorPane messageEditorPane; + private JScrollPane informationScrollPane; private JButton showInstructionsButton; @@ -78,12 +83,36 @@ buttonPanel.add(getShowQuizButton()); buttonPanel.add(getStartRoundOverrideButton()); add(buttonPanel, BorderLayout.NORTH); - editorPane = UserInterfaceUtils.createInstructionsEditorPane(); - scrollPane = new JScrollPane(editorPane); - scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); - scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); - add(scrollPane, BorderLayout.CENTER); + informationEditorPane = UserInterfaceUtils.createInstructionsEditorPane(); + informationScrollPane = new JScrollPane(informationEditorPane); + informationScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); + informationScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + + JPanel messagePanel = new JPanel(new BorderLayout()); + JLabel messagePanelLabel = new JLabel("System messages"); + messagePanelLabel.setFont(UserInterfaceUtils.DEFAULT_PLAIN_FONT); + messagePanel.add(messagePanelLabel, BorderLayout.NORTH); + Dimension minimumSize = new Dimension(600, 50); + messagePanel.setMinimumSize(minimumSize); + informationScrollPane.setMinimumSize(minimumSize); + messageEditorPane = UserInterfaceUtils.createInstructionsEditorPane(); + JScrollPane messageScrollPane = new JScrollPane(messageEditorPane); + messagePanel.add(messageScrollPane, BorderLayout.CENTER); + JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, informationScrollPane, messagePanel); + add(splitPane, BorderLayout.CENTER); + double proportion = 0.7d; + splitPane.setDividerLocation(proportion); + splitPane.setResizeWeight(proportion); } + + public void addMessage(String message) { + try { + messageEditorPane.getDocument().insertString(0, "-----\n" + message + "\n", null); + } catch (BadLocationException exception) { + exception.printStackTrace(); + } + } + private JButton getShowInstructionsButton() { if (showInstructionsButton == null) { @@ -174,16 +203,16 @@ public void setText(final String text) { SwingUtilities.invokeLater(new Runnable() { public void run() { - editorPane.setText(text); - scrollPane.revalidate(); + informationEditorPane.setText(text); + informationScrollPane.revalidate(); } }); } /** - * This method initializes Stop_Round_Button1 + * FIXME: replace with StringTemplate * - * @return javax.swing.JButton + * @return */ public void endRound(FacilitatorEndRoundEvent event) { builder = new StringBuilder(); @@ -207,10 +236,9 @@ clientId.toString(), data.getAllTokensEarnedThisRound(), data.getAllTokensEarnedThisRound() * model.getRoundConfiguration().getDollarsPerToken(), - data.getTotalTokens() * model.getRoundConfiguration().getDollarsPerToken()+ facilitator.getConfiguration().getShowUpPayment())); + data.getTotalTokens() * model.getRoundConfiguration().getDollarsPerToken()+ facilitator.getServerConfiguration().getShowUpPayment())); } builder.append("</tbody></table><hr>"); - //FIXME: Could not understand how to evaluate .isLastRound(), hence using the if (event.isLastRound()) { builder.append("<h2><font color='blue'>The experiment is over. Please prepare payments.</font></h2>"); } Repository URL: https://bitbucket.org/virtualcommons/irrigation/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-23 00:00:26
|
1 new commit in irrigation: https://bitbucket.org/virtualcommons/irrigation/changeset/64a05a84e892/ changeset: 64a05a84e892 user: alllee date: 2012-02-23 01:00:18 summary: fixes issue 7 still need to tweak the graying out of the canal, the extent is off, and the bug with displaying the immediate downstream neighbor is still present affected #: 2 files diff -r fc7949ef0c9ece1321263b4036e2ad039e53d40a -r 64a05a84e892be11cc5cc56ea6e7e71ba4d6fc4d src/main/java/edu/asu/commons/irrigation/client/CanalPanel.java --- a/src/main/java/edu/asu/commons/irrigation/client/CanalPanel.java +++ b/src/main/java/edu/asu/commons/irrigation/client/CanalPanel.java @@ -98,21 +98,32 @@ Graphics2D graphics2D = (Graphics2D) graphics; graphics2D.setColor(Color.BLUE); graphics2D.fillRect(0, 0, reservoirHeight, reservoirWidth); - // draw gates + + // draws the canal leading up to the gates for (int i = 0; i < NUMBER_OF_GATES - 1; i++) { - graphics2D.setColor(Color.BLUE); - graphics2D.fillRect(gates[i].getX(), gates[i].getY(), - gates[i].getWidth(), gates[i].getHeight()); + ClientData clientData = sortedClientDataList.get(i); + if (clientDataModel.getClientData().isImmediateNeighbor(clientData)) { + graphics2D.setColor(Color.BLUE); + graphics2D.fillRect(gates[i].getX(), gates[i].getY(), + gates[i].getWidth(), gates[i].getHeight()); + } + else { + graphics2D.setColor(Color.GRAY); + graphics2D.fillRect(gates[i].getX(), gates[i].getY(), + gates[i].getWidth(), gates[i].getHeight()); + } } for (ClientData clientData : sortedClientDataList) { int priority = clientData.getPriority(); Gate gate = gates[priority]; - graphics2D.setColor(Color.BLUE); - graphics2D.fillRect(gate.getOpeningsX(), gate.getOpeningsY(), - gate.getOpeningsWidth(), gate.getOpeningsHeight()); - graphics2D.setColor(Gate.DEFAULT_COLOR); - graphics2D.drawLine(gate.getx1(), gate.gety1(), gate.getx2(), - gate.gety2()); + if (clientDataModel.getClientData().isImmediateNeighbor(clientData)) { + graphics2D.setColor(Color.BLUE); + graphics2D.fillRect(gate.getOpeningsX(), gate.getOpeningsY(), + gate.getOpeningsWidth(), gate.getOpeningsHeight()); + graphics2D.setColor(Gate.DEFAULT_COLOR); + graphics2D.drawLine(gate.getx1(), gate.gety1(), gate.getx2(), + gate.gety2()); + } } graphics2D.setColor(Color.BLUE); diff -r fc7949ef0c9ece1321263b4036e2ad039e53d40a -r 64a05a84e892be11cc5cc56ea6e7e71ba4d6fc4d src/main/java/edu/asu/commons/irrigation/client/Gate.java --- a/src/main/java/edu/asu/commons/irrigation/client/Gate.java +++ b/src/main/java/edu/asu/commons/irrigation/client/Gate.java @@ -9,7 +9,7 @@ */ public class Gate { - public final static Color DEFAULT_COLOR = Color.black; + public final static Color DEFAULT_COLOR = Color.WHITE; private boolean open = false; Repository URL: https://bitbucket.org/virtualcommons/irrigation/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-22 22:03:41
|
1 new commit in irrigation: https://bitbucket.org/virtualcommons/irrigation/changeset/fc7949ef0c9e/ changeset: fc7949ef0c9e user: alllee date: 2012-02-22 23:03:33 summary: replacing instructions with StringTemplate in more places, still need to fix gate A animation and add message window to facilitator + improved debriefing screen affected #: 7 files diff -r a2a5b61d5434c9c3a4dd37a6b0aa186c6326d0c8 -r fc7949ef0c9ece1321263b4036e2ad039e53d40a src/main/java/edu/asu/commons/irrigation/client/ExperimentGameWindow.java --- a/src/main/java/edu/asu/commons/irrigation/client/ExperimentGameWindow.java +++ b/src/main/java/edu/asu/commons/irrigation/client/ExperimentGameWindow.java @@ -32,7 +32,6 @@ import edu.asu.commons.irrigation.events.EndRoundEvent; import edu.asu.commons.irrigation.events.QuizResponseEvent; import edu.asu.commons.irrigation.model.ClientData; -import edu.asu.commons.irrigation.model.GroupDataModel; import edu.asu.commons.ui.HtmlEditorPane; import edu.asu.commons.ui.HtmlEditorPane.FormActionEvent; import edu.asu.commons.ui.UserInterfaceUtils; @@ -515,60 +514,19 @@ public void showTokenInvestmentScreen() { Runnable runnable = new Runnable() { public void run() { - GroupDataModel group = clientDataModel.getGroupDataModel(); RoundConfiguration roundConfiguration = clientDataModel.getRoundConfiguration(); - int infrastructureEfficiency = 0; - if (roundConfiguration.isInfrastructureEfficiencyReset()) { - infrastructureEfficiency = roundConfiguration.getInitialInfrastructureEfficiency(); - } - else { - infrastructureEfficiency = Math.max(0, group.getInfrastructureEfficiency() - roundConfiguration.getInfrastructureDegradationFactor()); - } + tokenInstructionsEditorPane.setText(roundConfiguration.generateInvestmentInstructions(clientDataModel)); addCenterComponent(getTokenInvestmentPanel()); - StringBuilder builder = new StringBuilder( - String.format( - "<h2>Current infrastructure efficiency: %d%%</h2>" - + "<h2>Current water delivery capacity: %d cubic feet per second</h2>" - + "<h2>Available water supply: %d cubic feet per second</h2>", - infrastructureEfficiency, - group.calculateIrrigationCapacity(infrastructureEfficiency), - roundConfiguration.getWaterSupplyCapacity() - )); - builder.append(getServerConfiguration().getInvestmentInstructions()); - tokenInstructionsEditorPane.setText(builder.toString()); getInvestedTokensTextField().requestFocusInWindow(); } }; SwingUtilities.invokeLater(runnable); } - // FIXME: replace with StringTemplate - public void updateRoundInstructions(RoundConfiguration roundConfiguration) { + public void updateRoundInstructions() { + RoundConfiguration roundConfiguration = clientDataModel.getRoundConfiguration(); if (! roundConfiguration.isFirstRound()) { - instructionsBuilder.append(roundConfiguration.getInstructions()); - instructionsBuilder.append("<hr>"); - if (roundConfiguration.isInfrastructureEfficiencyReset()) { - int initialInfrastructureEfficiency = roundConfiguration.getInitialInfrastructureEfficiency(); - instructionsBuilder.append( - String.format("The irrigation infrastructure efficiency has been reset to %d%% with a corresponding water delivery capacity of %d cfps.", - initialInfrastructureEfficiency, - clientDataModel.getGroupDataModel().calculateIrrigationCapacity(initialInfrastructureEfficiency))); - - } - else { - int initialInfrastructureEfficiency = clientDataModel.getGroupDataModel().getInfrastructureEfficiency(); - int degradationFactor = roundConfiguration.getInfrastructureDegradationFactor(); - int actualInfrastructureEfficiency = initialInfrastructureEfficiency - degradationFactor; - instructionsBuilder.append( - String.format("<p>The irrigation infrastructure efficiency carried over from the previous round is %d%% but has declined by %d and is now %d%% (%d cfps) at the start of this round. " + - "The <b>available water supply is %d cfps</b>.</p><br><hr>", - initialInfrastructureEfficiency, - degradationFactor, - actualInfrastructureEfficiency, - clientDataModel.getGroupDataModel().calculateIrrigationCapacity(actualInfrastructureEfficiency), - roundConfiguration.getWaterSupplyCapacity() - )); - } + instructionsBuilder.append(roundConfiguration.generateUpdatedInstructions(clientDataModel)); displayInstructions(instructionsBuilder.toString()); } } diff -r a2a5b61d5434c9c3a4dd37a6b0aa186c6326d0c8 -r fc7949ef0c9ece1321263b4036e2ad039e53d40a src/main/java/edu/asu/commons/irrigation/client/IrrigationClient.java --- a/src/main/java/edu/asu/commons/irrigation/client/IrrigationClient.java +++ b/src/main/java/edu/asu/commons/irrigation/client/IrrigationClient.java @@ -160,7 +160,7 @@ clientDataModel.setRoundConfiguration(configuration); // FIXME: will need to replace this with an explicit ShowInstructionsRequest if we end up needing // explicit last-round show exit instructions behavior - experimentGameWindow.updateRoundInstructions(configuration); + experimentGameWindow.updateRoundInstructions(); } }); channel.add(this, new EventTypeProcessor<InfrastructureUpdateEvent>(InfrastructureUpdateEvent.class) { diff -r a2a5b61d5434c9c3a4dd37a6b0aa186c6326d0c8 -r fc7949ef0c9ece1321263b4036e2ad039e53d40a src/main/java/edu/asu/commons/irrigation/conf/RoundConfiguration.java --- a/src/main/java/edu/asu/commons/irrigation/conf/RoundConfiguration.java +++ b/src/main/java/edu/asu/commons/irrigation/conf/RoundConfiguration.java @@ -21,6 +21,7 @@ public class RoundConfiguration extends ExperimentRoundParameters.Base<ServerConfiguration> { private static final long serialVersionUID = -5053624886508752562L; + private String specialInstructions; public RoundConfiguration(String resource) { super(resource); @@ -109,9 +110,14 @@ template.add("dollarsPerToken", toCurrencyString(getDollarsPerToken())); return template.render(); } - + + /** + * FIXME: convoluted flow of control; specialInstructions is set by generateUpdatedInstructions before invoking getInstructions(). This means + * that showInstructions will never + * @return + */ public String getSpecialInstructions() { - return render(getProperty("special-instructions")); + return specialInstructions; } public boolean shouldDisplayGroupTokens() { @@ -207,4 +213,31 @@ return render(getProperty("restricted-visibility-instructions")); } + public String generateUpdatedInstructions(ClientDataModel clientDataModel) { + ST specialInstructionsTemplate = createStringTemplate(getProperty("special-instructions")); + populateInfrastructureEfficiencyAttributes(clientDataModel, specialInstructionsTemplate); + this.specialInstructions = specialInstructionsTemplate.render(); + return getInstructions(); + } + + private void populateInfrastructureEfficiencyAttributes(ClientDataModel clientDataModel, ST template) { + int initialInfrastructureEfficiency = clientDataModel.getGroupDataModel().getInfrastructureEfficiency(); + int actualInfrastructureEfficiency = initialInfrastructureEfficiency - getInfrastructureDegradationFactor(); + if (isInfrastructureEfficiencyReset()) { + // reset everything + initialInfrastructureEfficiency = actualInfrastructureEfficiency = getInitialInfrastructureEfficiency(); + } + int waterDeliveryCapacity = clientDataModel.getGroupDataModel().calculateIrrigationCapacity(actualInfrastructureEfficiency); + template.add("initialInfrastructureEfficiency", initialInfrastructureEfficiency); + template.add("actualInfrastructureEfficiency", actualInfrastructureEfficiency); + template.add("waterDeliveryCapacity", waterDeliveryCapacity); + + } + + public String generateInvestmentInstructions(ClientDataModel clientDataModel) { + ST template = createStringTemplate(getProperty("investment-instructions")); + populateInfrastructureEfficiencyAttributes(clientDataModel, template); + return template.render(); + } + } diff -r a2a5b61d5434c9c3a4dd37a6b0aa186c6326d0c8 -r fc7949ef0c9ece1321263b4036e2ad039e53d40a src/main/java/edu/asu/commons/irrigation/conf/ServerConfiguration.java --- a/src/main/java/edu/asu/commons/irrigation/conf/ServerConfiguration.java +++ b/src/main/java/edu/asu/commons/irrigation/conf/ServerConfiguration.java @@ -188,7 +188,7 @@ } public int getChatDuration() { - return getIntProperty("chat-duration", 5); + return getIntProperty("chat-duration", 60); } public String getGameScreenshotInstructions() { diff -r a2a5b61d5434c9c3a4dd37a6b0aa186c6326d0c8 -r fc7949ef0c9ece1321263b4036e2ad039e53d40a src/main/resources/configuration/asu/2011/pretest/irrigation.xml --- a/src/main/resources/configuration/asu/2011/pretest/irrigation.xml +++ b/src/main/resources/configuration/asu/2011/pretest/irrigation.xml @@ -316,6 +316,13 @@ <entry key="investment-instructions"><![CDATA[ +<h1>Current infrastructure condition</h1> + <hr> + <h2>Current infrastructure efficiency: {actualInfrastructureEfficiency}%</h2> + <h2>Current water delivery capacity: {waterDeliveryCapacity} cubic feet per second</h2> + <h2>Available water supply: {self.waterSupplyCapacity} cubic feet per second</h2> +<h1>Investment Instructions</h1> +<hr><p> You have been endowed with {self.tokenEndowment} tokens to invest. You must make a decision about how much you wish to invest in the irrigation infrastructure by choosing a number @@ -464,11 +471,19 @@ <h2>Special Instructions</h2><hr> {if (self.restrictedVisibility)} -<p>You can only communicate with and observe the actions of your immediate neighbors.</p> +<p>You can only <b>communicate with and observe the actions</b> of your <b>immediate neighbors</b>.</p> {endif} +<p> {if (self.infrastructureEfficiencyReset)} -<p>The irrigation infrastructure efficiency has been <b>reset to {self.initialInfrastructureEfficiency}%</b>.</p> +The irrigation infrastructure efficiency has been <b>reset to {initialInfrastructureEfficiency}%</b> with a corresponding <b>water delivery capacity of {waterDeliveryCapacity} cubic feet per second</b>. +{else} +The irrigation infrastructure efficiency carried over from the previous round is +{initialInfrastructureEfficiency}% but has declined by +{self.infrastructureDegradationFactor} and is now <b>{actualInfrastructureEfficiency}%</b> +with a corresponding <b>water delivery capacity of {waterDeliveryCapacity} cubic feet per second</b>. {endif} +</p> +<p>The <b>available water supply is {self.waterSupplyCapacity} cubic feet per second</b>.</p> ]]></entry><entry key="restricted-visibility-instructions"> diff -r a2a5b61d5434c9c3a4dd37a6b0aa186c6326d0c8 -r fc7949ef0c9ece1321263b4036e2ad039e53d40a src/main/resources/configuration/asu/2011/pretest/round0.xml --- a/src/main/resources/configuration/asu/2011/pretest/round0.xml +++ b/src/main/resources/configuration/asu/2011/pretest/round0.xml @@ -16,6 +16,7 @@ to your earnings. If you have any questions feel free to raise your hand and to ask your question. <br> +{self.specialInstructions} <b>Do you have any questions?</b></p> ]]> diff -r a2a5b61d5434c9c3a4dd37a6b0aa186c6326d0c8 -r fc7949ef0c9ece1321263b4036e2ad039e53d40a src/main/resources/configuration/asu/2011/pretest/round1.xml --- a/src/main/resources/configuration/asu/2011/pretest/round1.xml +++ b/src/main/resources/configuration/asu/2011/pretest/round1.xml @@ -12,6 +12,7 @@ <p> This is the second practice round of the experiment. If you have any questions after participating in the first round, please ask them now. </p> +{self.specialInstructions} ]]></entry></properties> Repository URL: https://bitbucket.org/virtualcommons/irrigation/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-21 21:58:16
|
1 new commit in irrigation: https://bitbucket.org/virtualcommons/irrigation/changeset/a2a5b61d5434/ changeset: a2a5b61d5434 user: alllee date: 2012-02-21 22:58:07 summary: animation appears to be mostly working now, with one glitch for position A when their gate is open affected #: 7 files diff -r 7bc24ad24c424230a11db6637311436713a0d31d -r a2a5b61d5434c9c3a4dd37a6b0aa186c6326d0c8 src/main/java/edu/asu/commons/irrigation/client/CanalPanel.java --- a/src/main/java/edu/asu/commons/irrigation/client/CanalPanel.java +++ b/src/main/java/edu/asu/commons/irrigation/client/CanalPanel.java @@ -17,7 +17,7 @@ /** * $Id$ * - * FIXME: completely rewrite horrifyingly convoluted animation logic + * FIXME: convoluted gate and animation logic is in dire need of refactoring / rewrite * * @author Sanket Joshi, Allen Lee */ @@ -30,7 +30,7 @@ private final static int DELAY = 20; - private Ball[] balls; + private Ball[] particles; private final static int BALLCOUNT = 500; private final static int NUMBER_OF_GATES = 6; @@ -104,11 +104,7 @@ graphics2D.fillRect(gates[i].getX(), gates[i].getY(), gates[i].getWidth(), gates[i].getHeight()); } - // checkRestrictedVisibility(); for (ClientData clientData : sortedClientDataList) { -// if (restrictedVisibility && !clientDataModel.isImmediateNeighbor(clientData)) { -// continue; -// } int priority = clientData.getPriority(); Gate gate = gates[priority]; graphics2D.setColor(Color.BLUE); @@ -127,22 +123,22 @@ graphics.setColor(Color.WHITE); // int ballCounter = 0; for (int i = 0; i < BALLCOUNT; i++) { - if ((balls[i].getPosition() == 1) || (balls[i].getPosition() == 2) - || (balls[i].getPosition() == 3) - || (balls[i].getPosition() == 4) - || (balls[i].getPosition() == 5)) { - if (!((gates[balls[i].getPosition() - 1].isClosed()) - && balls[i].getY() >= (gates[balls[i].getPosition() - 1].getY() + gates[balls[i].getPosition() - 1].getHeight()))) - graphics.fillOval(balls[i].x, balls[i].y, - balls[i].getBallSize(), balls[i].getBallSize()); + if ((particles[i].getPosition() == 1) || (particles[i].getPosition() == 2) + || (particles[i].getPosition() == 3) + || (particles[i].getPosition() == 4) + || (particles[i].getPosition() == 5)) { + if (!((gates[particles[i].getPosition() - 1].isClosed()) + && particles[i].getY() >= (gates[particles[i].getPosition() - 1].getY() + gates[particles[i].getPosition() - 1].getHeight()))) + graphics.fillOval(particles[i].x, particles[i].y, + particles[i].getBallSize(), particles[i].getBallSize()); } else { - if (balls[i].getPosition() != 0) { - if (gates[balls[i].getPosition() - 6].getHeight() != 0) - graphics.fillOval(balls[i].x, balls[i].y, - balls[i].getBallSize(), balls[i].getBallSize()); + if (particles[i].getPosition() != 0) { + if (gates[particles[i].getPosition() - 6].getHeight() != 0) + graphics.fillOval(particles[i].x, particles[i].y, + particles[i].getBallSize(), particles[i].getBallSize()); } else { - graphics.fillOval(balls[i].x, balls[i].y, - balls[i].getBallSize(), balls[i].getBallSize()); + graphics.fillOval(particles[i].x, particles[i].y, + particles[i].getBallSize(), particles[i].getBallSize()); } } } @@ -233,9 +229,9 @@ * initialize the Balls */ private void initializeBalls() { - balls = new Ball[BALLCOUNT]; + particles = new Ball[BALLCOUNT]; for (int i = 0; i < BALLCOUNT; i++) { - balls[i] = new Ball(generator); + particles[i] = new Ball(generator); } } @@ -246,8 +242,8 @@ ClientData thisClientData = clientDataModel.getClientData(); for (int i = 0; i < BALLCOUNT; i++) { // updateGUI(); - balls[i].x += balls[i].moveX; - balls[i].y += balls[i].moveY; + particles[i].x += particles[i].moveX; + particles[i].y += particles[i].moveY; process(i, sortedClients, thisClientData); } repaint(); @@ -259,40 +255,40 @@ */ private void process(int i, List<ClientData> sortedClients, ClientData thisClientData) { - switch (balls[i].getPosition()) { + switch (particles[i].getPosition()) { case 0: - if ((balls[i].x >= (reservoirWidth - gateBuffer) && balls[i].x <= reservoirWidth) - && (balls[i].y >= reservoirHeight - (int) (maximumIrrigationCapacity * canalHeightMultiplier) && balls[i].y <= reservoirHeight)) + if ((particles[i].x >= (reservoirWidth - gateBuffer) && particles[i].x <= reservoirWidth) + && (particles[i].y >= reservoirHeight - (int) (maximumIrrigationCapacity * canalHeightMultiplier) && particles[i].y <= reservoirHeight)) { - balls[i].setPosition(1); + particles[i].setPosition(1); setBounds(i); } // still in server else { setBounds(i); - if (balls[i].x <= balls[i].xLowerBound - || balls[i].x >= balls[i].xUpperBound - - balls[i].getBallSize()) { - balls[i].moveX = balls[i].moveX * -1; + if (particles[i].x <= particles[i].xLowerBound + || particles[i].x >= particles[i].xUpperBound + - particles[i].getBallSize()) { + particles[i].moveX = particles[i].moveX * -1; } - if (balls[i].y <= balls[i].yLowerBound - || balls[i].y >= balls[i].yUpperBound - - balls[i].getBallSize()) - balls[i].moveY = balls[i].moveY * -1; + if (particles[i].y <= particles[i].yLowerBound + || particles[i].y >= particles[i].yUpperBound + - particles[i].getBallSize()) + particles[i].moveY = particles[i].moveY * -1; } break; case 1: if (gates[0].isOpen() - && (balls[i].x >= gates[0].getOpeningsX() && balls[i].x <= (gates[0].getOpeningsX() + gateBuffer)) - && (balls[i].y >= reservoirHeight - gateBuffer && balls[i].y <= reservoirHeight)) + && (particles[i].x >= gates[0].getOpeningsX() && particles[i].x <= (gates[0].getOpeningsX() + gateBuffer)) + && (particles[i].y >= reservoirHeight - gateBuffer && particles[i].y <= reservoirHeight)) { if (restrictedVisibility && sortedClients.get(0).isImmediateNeighbor(thisClientData) || ! restrictedVisibility) { // if we are in the restricted visibility condition AND gate 0 is an immediate neighbor of this client OR we are not in a restricted visibility condition at all, put this ball in the // gate (or at least I *think* this is what Sanket's god-awful code is doing). - balls[i].setPosition(7); + particles[i].setPosition(7); // directly pass in the information setBounds(i); break; @@ -300,190 +296,189 @@ } // otherwise the gate is closed or we don't know enough about the gate, pass it on down setBounds(i); - if (balls[i].getX() > balls[i].xUpperBound) { - balls[i].setPosition(2); + if (particles[i].getX() > particles[i].xUpperBound) { + particles[i].setPosition(2); } - if (balls[i].getY() >= balls[i].yUpperBound - - balls[i].getBallSize() - || balls[i].getY() <= balls[i].yLowerBound) { - balls[i].moveY = balls[i].moveY * -1; + if (particles[i].getY() >= particles[i].yUpperBound + - particles[i].getBallSize() + || particles[i].getY() <= particles[i].yLowerBound) { + particles[i].moveY = particles[i].moveY * -1; } break; case 2: if (gates[1].isOpen() - && (balls[i].x >= gates[1].getOpeningsX() && balls[i].x <= (gates[1] + && (particles[i].x >= gates[1].getOpeningsX() && particles[i].x <= (gates[1] .getOpeningsX() + gateBuffer)) - && (balls[i].y >= reservoirHeight - gateBuffer && balls[i].y <= reservoirHeight)) + && (particles[i].y >= reservoirHeight - gateBuffer && particles[i].y <= reservoirHeight)) { if (!restrictedVisibility || (restrictedVisibility && sortedClients.get(1).isImmediateNeighbor(thisClientData))) { - balls[i].setPosition(8); + particles[i].setPosition(8); // directly pass in the information setBounds(i); break; } } setBounds(i); - if (balls[i].getX() > balls[i].xUpperBound) { - balls[i].setPosition(3); + if (particles[i].getX() > particles[i].xUpperBound) { + particles[i].setPosition(3); } - if (balls[i].getY() >= balls[i].yUpperBound - - balls[i].getBallSize() - || balls[i].getY() <= balls[i].yLowerBound) { - balls[i].moveY = balls[i].moveY * -1; + if (particles[i].getY() >= particles[i].yUpperBound + - particles[i].getBallSize() + || particles[i].getY() <= particles[i].yLowerBound) { + particles[i].moveY = particles[i].moveY * -1; } break; case 3: if (gates[2].isOpen() - && (balls[i].x >= gates[2].getOpeningsX() && balls[i].x <= (gates[2] + && (particles[i].x >= gates[2].getOpeningsX() && particles[i].x <= (gates[2] .getOpeningsX() + gateBuffer)) - && (balls[i].y >= reservoirHeight - gateBuffer && balls[i].y <= reservoirHeight)) + && (particles[i].y >= reservoirHeight - gateBuffer && particles[i].y <= reservoirHeight)) { if (!restrictedVisibility || (restrictedVisibility && sortedClients.get(2).isImmediateNeighbor(thisClientData))) { - balls[i].setPosition(9); + particles[i].setPosition(9); // directly pass in the information setBounds(i); break; } } setBounds(i); - if (balls[i].getX() > balls[i].xUpperBound) { - balls[i].setPosition(4); + if (particles[i].getX() > particles[i].xUpperBound) { + particles[i].setPosition(4); } - if (balls[i].getY() >= balls[i].yUpperBound - - balls[i].getBallSize() - || balls[i].getY() <= balls[i].yLowerBound) { - balls[i].moveY = balls[i].moveY * -1; + if (particles[i].getY() >= particles[i].yUpperBound + - particles[i].getBallSize() + || particles[i].getY() <= particles[i].yLowerBound) { + particles[i].moveY = particles[i].moveY * -1; } break; case 4: if (gates[3].isOpen() - && (balls[i].x >= gates[3].getOpeningsX() && balls[i].x <= (gates[3] + && (particles[i].x >= gates[3].getOpeningsX() && particles[i].x <= (gates[3] .getOpeningsX() + gateBuffer)) - && (balls[i].y >= reservoirHeight - gateBuffer && balls[i].y <= reservoirHeight)) + && (particles[i].y >= reservoirHeight - gateBuffer && particles[i].y <= reservoirHeight)) { if (!restrictedVisibility || (restrictedVisibility && !sortedClients.get(3).isImmediateNeighbor(thisClientData))) { - balls[i].setPosition(10); + particles[i].setPosition(10); // directly pass in the information setBounds(i); break; } } setBounds(i); - if (balls[i].getX() > balls[i].xUpperBound) { - balls[i].setPosition(5); + if (particles[i].getX() > particles[i].xUpperBound) { + particles[i].setPosition(5); } - if (balls[i].getY() >= balls[i].yUpperBound - - balls[i].getBallSize() - || balls[i].getY() <= balls[i].yLowerBound) { - balls[i].moveY = balls[i].moveY * -1; + if (particles[i].getY() >= particles[i].yUpperBound + - particles[i].getBallSize() + || particles[i].getY() <= particles[i].yLowerBound) { + particles[i].moveY = particles[i].moveY * -1; } break; case 5: if (gates[4].isOpen() - && (balls[i].x >= gates[4].getOpeningsX() && balls[i].x <= (gates[4] + && (particles[i].x >= gates[4].getOpeningsX() && particles[i].x <= (gates[4] .getOpeningsX() + gateBuffer)) - && (balls[i].y >= reservoirHeight - gateBuffer && balls[i].y <= reservoirHeight)) + && (particles[i].y >= reservoirHeight - gateBuffer && particles[i].y <= reservoirHeight)) { if (!restrictedVisibility || (restrictedVisibility && !sortedClients.get(4).isImmediateNeighbor(thisClientData))) { - balls[i].setPosition(11); + particles[i].setPosition(11); // directly pass in the information setBounds(i); break; } } setBounds(i); - if (balls[i].getX() > balls[i].xUpperBound) { - balls[i].setPosition(6); + if (particles[i].getX() > particles[i].xUpperBound) { + particles[i].setPosition(6); } - if (balls[i].getY() >= balls[i].yUpperBound - - balls[i].getBallSize() - || balls[i].getY() <= balls[i].yLowerBound) { - balls[i].moveY = balls[i].moveY * -1; + if (particles[i].getY() >= particles[i].yUpperBound + - particles[i].getBallSize() + || particles[i].getY() <= particles[i].yLowerBound) { + particles[i].moveY = particles[i].moveY * -1; } break; case 6: setBounds(i); - if (balls[i].getX() > balls[i].xUpperBound) { - setBallInServer(i); + if (particles[i].getX() > particles[i].xUpperBound) { + returnParticleToReservoir(i); } - if (balls[i].getY() >= balls[i].yUpperBound - - balls[i].getBallSize() - || balls[i].getY() <= balls[i].yLowerBound) { - balls[i].moveY = balls[i].moveY * -1; + if (particles[i].getY() >= particles[i].yUpperBound + - particles[i].getBallSize() + || particles[i].getY() <= particles[i].yLowerBound) { + particles[i].moveY = particles[i].moveY * -1; } break; } // set balls back to the server when they complete their flow in the // gates - if ((balls[i].getPosition() == 11) || (balls[i].getPosition() == 7) - || (balls[i].getPosition() == 8) - || (balls[i].getPosition() == 9) - || (balls[i].getPosition() == 10)) { - if (balls[i].getY() >= 150) { - setBallInServer(i); + if ((particles[i].getPosition() == 11) || (particles[i].getPosition() == 7) + || (particles[i].getPosition() == 8) + || (particles[i].getPosition() == 9) + || (particles[i].getPosition() == 10)) { + if (particles[i].getY() >= 150) { + returnParticleToReservoir(i); } else { setBounds(i); } } } - private void setBallInServer(int i) { + private void returnParticleToReservoir(int i) { generator.setSeed(i * (i + 1)); - balls[i].setX(generator.nextInt(reservoirWidth)); - balls[i].setY(generator.nextInt(reservoirHeight)); - balls[i].setPosition(0); - if (balls[i].moveX == 0) - balls[i].moveX = generator.nextInt(15); + particles[i].setX(generator.nextInt(reservoirWidth)); + particles[i].setY(generator.nextInt(reservoirHeight)); + particles[i].setPosition(0); + if (particles[i].moveX == 0) + particles[i].moveX = generator.nextInt(15); setBounds(i); } - private void setBounds(int ballIndex) { - // TODO Auto-generated method stub + private void setBounds(int index) { // ball is in the server - if (balls[ballIndex].getPosition() == 0) { - balls[ballIndex].xUpperBound = reservoirWidth; - balls[ballIndex].xLowerBound = 0; - balls[ballIndex].yUpperBound = reservoirHeight; - balls[ballIndex].yLowerBound = 0; + if (particles[index].getPosition() == 0) { + particles[index].xUpperBound = reservoirWidth; + particles[index].xLowerBound = 0; + particles[index].yUpperBound = reservoirHeight; + particles[index].yLowerBound = 0; // balls[ballIndex].moveX = generator.nextInt(6); // balls[ballIndex].moveY = generator.nextInt(6); // balls[ballIndex].moveX = 3; // balls[ballIndex].moveY = 3; } else { - if ((balls[ballIndex].getPosition() == 1) - || (balls[ballIndex].getPosition() == 2) - || (balls[ballIndex].getPosition() == 3) - || (balls[ballIndex].getPosition() == 4) - || (balls[ballIndex].getPosition() == 5) - || (balls[ballIndex].getPosition() == 6)) { + if ((particles[index].getPosition() == 1) + || (particles[index].getPosition() == 2) + || (particles[index].getPosition() == 3) + || (particles[index].getPosition() == 4) + || (particles[index].getPosition() == 5) + || (particles[index].getPosition() == 6)) { - balls[ballIndex].xUpperBound = gates[balls[ballIndex].getPosition() - 1].getX() - + gates[balls[ballIndex].getPosition() - 1].getWidth(); - balls[ballIndex].xLowerBound = gates[balls[ballIndex].getPosition() - 1].getX(); - balls[ballIndex].yUpperBound = gates[balls[ballIndex].getPosition() - 1].getY() + particles[index].xUpperBound = gates[particles[index].getPosition() - 1].getX() + + gates[particles[index].getPosition() - 1].getWidth(); + particles[index].xLowerBound = gates[particles[index].getPosition() - 1].getX(); + particles[index].yUpperBound = gates[particles[index].getPosition() - 1].getY() /* * +gate[balls[ballIndex]. * getPosition() - * 1].getHeight() */; - balls[ballIndex].yLowerBound = gates[balls[ballIndex].getPosition() - 1].getY(); + particles[index].yLowerBound = gates[particles[index].getPosition() - 1].getY(); } // the ball is in one of the openings else { - balls[ballIndex].xUpperBound = gates[balls[ballIndex] + particles[index].xUpperBound = gates[particles[index] .getPosition() - 7].getOpeningsX() - + gates[balls[ballIndex].getPosition() - 7].getGateWidth(); - balls[ballIndex].xLowerBound = gates[balls[ballIndex].getPosition() - 7].getOpeningsX(); - balls[ballIndex].yUpperBound = gates[balls[ballIndex].getPosition() - 7].getOpeningsY() - + gates[balls[ballIndex].getPosition() - 7].getOpeningsHeight(); - balls[ballIndex].yLowerBound = gates[balls[ballIndex].getPosition() - 7].getOpeningsY(); + + gates[particles[index].getPosition() - 7].getGateWidth(); + particles[index].xLowerBound = gates[particles[index].getPosition() - 7].getOpeningsX(); + particles[index].yUpperBound = gates[particles[index].getPosition() - 7].getOpeningsY() + + gates[particles[index].getPosition() - 7].getOpeningsHeight(); + particles[index].yLowerBound = gates[particles[index].getPosition() - 7].getOpeningsY(); // X change in motion - balls[ballIndex].moveX = 0; + particles[index].moveX = 0; // Y change in motion - balls[ballIndex].moveY = 3; + particles[index].moveY = 3; } } } diff -r 7bc24ad24c424230a11db6637311436713a0d31d -r a2a5b61d5434c9c3a4dd37a6b0aa186c6326d0c8 src/main/java/edu/asu/commons/irrigation/client/ExperimentGameWindow.java --- a/src/main/java/edu/asu/commons/irrigation/client/ExperimentGameWindow.java +++ b/src/main/java/edu/asu/commons/irrigation/client/ExperimentGameWindow.java @@ -585,7 +585,6 @@ SwingUtilities.invokeLater(new Runnable() { public void run() { startTimer(getServerConfiguration().getChatDuration() * 1000L); -// ChatPanel chatPanel = getChatPanel(); chatPanel.initialize(clientDataModel.getAllClientIdentifiers()); addCenterComponent( chatPanel ); chatPanel.setFocusInChatField(); diff -r 7bc24ad24c424230a11db6637311436713a0d31d -r a2a5b61d5434c9c3a4dd37a6b0aa186c6326d0c8 src/main/java/edu/asu/commons/irrigation/client/GamePanel.java --- a/src/main/java/edu/asu/commons/irrigation/client/GamePanel.java +++ b/src/main/java/edu/asu/commons/irrigation/client/GamePanel.java @@ -396,9 +396,14 @@ // FIXME: figure out how to reliably set the progress bar colors regardless of OS. // setProgressBarColor(timeLeft); // only show open gates for immediately neighboring clients. + boolean restrictedVisibility = clientDataModel.getRoundConfiguration().isRestrictedVisibility(); + final ClientData thisClientData = clientDataModel.getClientData(); for (final ClientData clientData : clientDataModel.getClientDataMap().values()) { if (clientData.isGateOpen()) { + if (restrictedVisibility && ! thisClientData.isImmediateNeighbor(clientData)) { + continue; + } canalPanel.openGate(clientData.getPriority()); } else { diff -r 7bc24ad24c424230a11db6637311436713a0d31d -r a2a5b61d5434c9c3a4dd37a6b0aa186c6326d0c8 src/main/java/edu/asu/commons/irrigation/client/IrrigationClient.java --- a/src/main/java/edu/asu/commons/irrigation/client/IrrigationClient.java +++ b/src/main/java/edu/asu/commons/irrigation/client/IrrigationClient.java @@ -158,6 +158,8 @@ RoundConfiguration configuration = event.getRoundConfiguration(); clientDataModel.setGroupDataModel(event.getClientData().getGroupDataModel()); clientDataModel.setRoundConfiguration(configuration); + // FIXME: will need to replace this with an explicit ShowInstructionsRequest if we end up needing + // explicit last-round show exit instructions behavior experimentGameWindow.updateRoundInstructions(configuration); } }); diff -r 7bc24ad24c424230a11db6637311436713a0d31d -r a2a5b61d5434c9c3a4dd37a6b0aa186c6326d0c8 src/main/java/edu/asu/commons/irrigation/client/TokenContributionChartPanel.java --- a/src/main/java/edu/asu/commons/irrigation/client/TokenContributionChartPanel.java +++ b/src/main/java/edu/asu/commons/irrigation/client/TokenContributionChartPanel.java @@ -98,7 +98,7 @@ private JFreeChart createBarChart(ClientDataModel clientDataModel) { final CategoryDataset dataset = createCategoryDataset(clientDataModel); - JFreeChart chart = ChartFactory.createBarChart("Tokens Contributed by your Neighbors", "Participant", "Tokens Invested", dataset, + JFreeChart chart = ChartFactory.createBarChart("Tokens Invested by You and Your Neighbors", "Participant", "Tokens Invested", dataset, PlotOrientation.VERTICAL, false, false, false); CategoryPlot plot = chart.getCategoryPlot(); ValueAxis rangeAxis = plot.getRangeAxis(); diff -r 7bc24ad24c424230a11db6637311436713a0d31d -r a2a5b61d5434c9c3a4dd37a6b0aa186c6326d0c8 src/main/java/edu/asu/commons/irrigation/conf/ServerConfiguration.java --- a/src/main/java/edu/asu/commons/irrigation/conf/ServerConfiguration.java +++ b/src/main/java/edu/asu/commons/irrigation/conf/ServerConfiguration.java @@ -188,7 +188,7 @@ } public int getChatDuration() { - return getIntProperty("chat-duration", 60); + return getIntProperty("chat-duration", 5); } public String getGameScreenshotInstructions() { diff -r 7bc24ad24c424230a11db6637311436713a0d31d -r a2a5b61d5434c9c3a4dd37a6b0aa186c6326d0c8 src/main/resources/configuration/asu/2011/pretest/irrigation.xml --- a/src/main/resources/configuration/asu/2011/pretest/irrigation.xml +++ b/src/main/resources/configuration/asu/2011/pretest/irrigation.xml @@ -397,11 +397,15 @@ </table><h2>Earnings</h2><hr> - <p>You are in position {clientData.priorityString} and received + <p> + You are in position {clientData.priorityString} and received {clientData.totalDollarsEarnedThisRound} this past round. Your - <b>total income</b> is <b>{clientData.grandTotalIncome}</b>, including the - {showUpPayment} show-up bonus and {clientData.quizEarnings} for - answering {clientData.correctQuizAnswers} quiz questions correctly.</p> + <b>total income</b> is <b>{clientData.grandTotalIncome}</b>, including + the {showUpPayment} show-up bonus + {if (clientData.quizEarnings)} + and {clientData.quizEarnings} for answering {clientData.correctQuizAnswers} quiz questions correctly + {endif} + </p> {if (showExitInstructions)} <h2>Exit Survey</h2><hr> @@ -446,10 +450,10 @@ <tr><th></th></th><th>Infrastructure Efficiency</th><th>Water Delivery Capacity</th><th>Water Availability</th></tr> -<tr> +<tr align='center'><td>Before Investment</td><td>{groupDataModel.infrastructureEfficiencyBeforeInvestment}%</td><td>{groupDataModel.irrigationCapacityBeforeInvestment} cubic feet per second</td><td>{groupDataModel.actualWaterDeliveryCapacity} cubic feet per second</td></tr> -<tr> +<tr align='center'><td>After Investment</td><td>{groupDataModel.infrastructureEfficiency}%</td><td>{groupDataModel.irrigationCapacity} cubic feet per second</td><td>{groupDataModel.actualWaterDeliveryCapacity} cubic feet per second</td></tr></table> Repository URL: https://bitbucket.org/virtualcommons/irrigation/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-21 20:34:06
|
1 new commit in irrigation: https://bitbucket.org/virtualcommons/irrigation/changeset/7bc24ad24c42/ changeset: 7bc24ad24c42 user: alllee date: 2012-02-21 21:33:56 summary: csidex version bump affected #: 2 files diff -r 82e76c7ce6240e62ed5f3661c4bc8fac01eead58 -r 7bc24ad24c424230a11db6637311436713a0d31d ivy.xml --- a/ivy.xml +++ b/ivy.xml @@ -5,7 +5,7 @@ <ivy-module version="2.0"><info organisation="edu.asu.commons" module="irrigation"/><dependencies> - <dependency org="edu.asu.commons" name="csidex" rev="0.4-SNAPSHOT"/> + <dependency org="edu.asu.commons" name="csidex" rev="0.5-SNAPSHOT"/><dependency org="org.jfree" name="jfreechart" rev="1.0.14"/></dependencies></ivy-module> diff -r 82e76c7ce6240e62ed5f3661c4bc8fac01eead58 -r 7bc24ad24c424230a11db6637311436713a0d31d pom.xml --- a/pom.xml +++ b/pom.xml @@ -37,7 +37,7 @@ <dependency><groupId>edu.asu.commons</groupId><artifactId>csidex</artifactId> - <version>0.4-SNAPSHOT</version> + <version>0.5-SNAPSHOT</version></dependency><dependency><groupId>org.jfree</groupId> Repository URL: https://bitbucket.org/virtualcommons/irrigation/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-21 20:33:21
|
1 new commit in foraging: https://bitbucket.org/virtualcommons/foraging/changeset/366a904a852b/ changeset: 366a904a852b user: alllee date: 2012-02-21 21:33:09 summary: version bump on csidex affected #: 2 files diff -r 818b852040e629ba347af23fbb74523b5b932ca6 -r 366a904a852bcf0916fe60507c6d20f7408b4d8a ivy.xml --- a/ivy.xml +++ b/ivy.xml @@ -5,7 +5,7 @@ <ivy-module version="2.0"><info organisation="edu.asu.commons" module="foraging"/><dependencies> - <dependency org="edu.asu.commons" name="csidex" rev="0.4-SNAPSHOT" /> + <dependency org="edu.asu.commons" name="csidex" rev="0.5-SNAPSHOT" /><dependency org="net.java.dev.jogl" name="jogl" rev="1.1.1-rc6"/><dependency org="javax.media" name="jmf" rev="2.1.1e"/><dependency org="javax.jnlp" name="javaws" rev="1.6.0_30"/> diff -r 818b852040e629ba347af23fbb74523b5b932ca6 -r 366a904a852bcf0916fe60507c6d20f7408b4d8a pom.xml --- a/pom.xml +++ b/pom.xml @@ -79,7 +79,7 @@ <dependency><groupId>edu.asu.commons</groupId><artifactId>csidex</artifactId> - <version>0.4-SNAPSHOT</version> + <version>0.5-SNAPSHOT</version></dependency><dependency><groupId>net.java.dev.jogl</groupId> Repository URL: https://bitbucket.org/virtualcommons/foraging/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-15 23:06:25
|
1 new commit in irrigation: https://bitbucket.org/virtualcommons/irrigation/changeset/82e76c7ce624/ changeset: 82e76c7ce624 user: alllee date: 2012-02-16 00:06:11 summary: forgot to add cfps to before investment row affected #: 1 file diff -r cc7d0ec0c80e657de7aa74599f017bfe7296a579 -r 82e76c7ce6240e62ed5f3661c4bc8fac01eead58 src/main/resources/configuration/asu/2011/pretest/irrigation.xml --- a/src/main/resources/configuration/asu/2011/pretest/irrigation.xml +++ b/src/main/resources/configuration/asu/2011/pretest/irrigation.xml @@ -447,7 +447,7 @@ <th></th></th><th>Infrastructure Efficiency</th><th>Water Delivery Capacity</th><th>Water Availability</th></tr><tr> -<td>Before Investment</td><td>{groupDataModel.infrastructureEfficiencyBeforeInvestment}%</td><td>{groupDataModel.irrigationCapacityBeforeInvestment} cubic feet per second</td><td>{groupDataModel.actualWaterDeliveryCapacity}</td> +<td>Before Investment</td><td>{groupDataModel.infrastructureEfficiencyBeforeInvestment}%</td><td>{groupDataModel.irrigationCapacityBeforeInvestment} cubic feet per second</td><td>{groupDataModel.actualWaterDeliveryCapacity} cubic feet per second</td></tr><tr><td>After Investment</td><td>{groupDataModel.infrastructureEfficiency}%</td><td>{groupDataModel.irrigationCapacity} cubic feet per second</td><td>{groupDataModel.actualWaterDeliveryCapacity} cubic feet per second</td> Repository URL: https://bitbucket.org/virtualcommons/irrigation/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-15 23:02:31
|
1 new commit in irrigation: https://bitbucket.org/virtualcommons/irrigation/changeset/cc7d0ec0c80e/ changeset: cc7d0ec0c80e user: alllee date: 2012-02-16 00:02:11 summary: fixes issue 12 by adding a hodgepodge of focus listeners revisit when we have more time to see if there's a better solution to transfer focus affected #: 1 file diff -r b524f4437f6668bb504f4de4618cbb1c33703545 -r cc7d0ec0c80e657de7aa74599f017bfe7296a579 src/main/java/edu/asu/commons/irrigation/client/ChatPanel.java --- a/src/main/java/edu/asu/commons/irrigation/client/ChatPanel.java +++ b/src/main/java/edu/asu/commons/irrigation/client/ChatPanel.java @@ -2,6 +2,8 @@ import java.awt.BorderLayout; import java.awt.Color; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.HashMap; @@ -40,7 +42,7 @@ */ @SuppressWarnings("serial") -public class ChatPanel extends JPanel { +public class ChatPanel extends JPanel implements FocusListener { private IrrigationClient irrigationClient; @@ -171,6 +173,10 @@ add(messageScrollPane, BorderLayout.CENTER); // add(participantButtonPanel, BorderLayout.EAST); add(textEntryPanel, BorderLayout.PAGE_END); + addFocusListener(this); + messageScrollPane.addFocusListener(this); + textEntryPanel.addFocusListener(this); + chatInstructionsPane.addFocusListener(this); } public void displayMessage(String chatHandle, String message) { @@ -209,4 +215,19 @@ chatField.requestFocusInWindow(); } + @Override + public void focusGained(FocusEvent e) { + if (e.getComponent().equals(chatField)) { + System.err.println("chat field got focus, not setting focus again"); + return; + } + System.err.println("gained focus, setting on chat field: " + e); + chatField.requestFocusInWindow(); + } + + @Override + public void focusLost(FocusEvent e) { + + } + } Repository URL: https://bitbucket.org/virtualcommons/irrigation/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-15 22:46:07
|
1 new commit in irrigation: https://bitbucket.org/virtualcommons/irrigation/changeset/b524f4437f66/ changeset: b524f4437f66 user: alllee date: 2012-02-15 23:45:31 summary: fixes issue 13 affected #: 1 file diff -r c5dbf36f030b674e304772a1ad4d2d3ea27bde78 -r b524f4437f6668bb504f4de4618cbb1c33703545 src/main/java/edu/asu/commons/irrigation/client/ChatPanel.java --- a/src/main/java/edu/asu/commons/irrigation/client/ChatPanel.java +++ b/src/main/java/edu/asu/commons/irrigation/client/ChatPanel.java @@ -132,14 +132,17 @@ StyledDocument styledDocument = messageWindow.getStyledDocument(); // and why not have something like... StyleContext.getDefaultStyle() to // replace this junk - Style defaultStyle = StyleContext.getDefaultStyleContext().getStyle( - StyleContext.DEFAULT_STYLE); - // Style regularStyle = styledDocument.addStyle("regular", - // defaultStyle); + Style defaultStyle = getDefaultStyle(); StyleConstants.setFontSize(defaultStyle, 16); StyleConstants.setFontFamily(defaultStyle, UserInterfaceUtils.getDefaultFont().getFamily()); StyleConstants.setBold(styledDocument.addStyle("bold", defaultStyle), true); StyleConstants.setItalic(styledDocument.addStyle("italic", defaultStyle), true); + StyleConstants.setUnderline(styledDocument.addStyle("underline", defaultStyle), true); + + } + + private Style getDefaultStyle() { + return StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE); } public void setTimeLeft(long timeLeft) { @@ -177,7 +180,7 @@ } try { document.insertString(0, chatHandle, document.getStyle("bold")); - document.insertString(chatHandle.length(), message + "\n", null); + document.insertString(chatHandle.length(), message + "\n", getDefaultStyle()); messageWindow.setCaretPosition(0); } catch (BadLocationException e) { Repository URL: https://bitbucket.org/virtualcommons/irrigation/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-15 21:40:58
|
1 new commit in foraging: https://bitbucket.org/virtualcommons/foraging/changeset/3a0ef9068485/ changeset: 3a0ef9068485 branch: stable user: alllee date: 2012-02-15 22:25:20 summary: merge with default affected #: 7 files diff -r 991ec958f3ab761ad151028c92f3693a7be02010 -r 3a0ef9068485da2d5ad7d6a5cba1f736aa3bfb8a src/main/java/edu/asu/commons/foraging/client/ForagingClient.java --- a/src/main/java/edu/asu/commons/foraging/client/ForagingClient.java +++ b/src/main/java/edu/asu/commons/foraging/client/ForagingClient.java @@ -2,14 +2,12 @@ import java.awt.BorderLayout; import java.awt.Color; -import java.awt.Frame; import java.util.LinkedList; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.UIManager; -import javax.swing.WindowConstants; import edu.asu.commons.client.BaseClient; import edu.asu.commons.event.ClientMessageEvent; diff -r 991ec958f3ab761ad151028c92f3693a7be02010 -r 3a0ef9068485da2d5ad7d6a5cba1f736aa3bfb8a src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java --- a/src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java +++ b/src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java @@ -570,7 +570,7 @@ } public boolean isCensoredChat() { - return getBooleanProperty("censored-chat-enabled", false); + return getBooleanProperty("censored-chat-enabled"); } /** diff -r 991ec958f3ab761ad151028c92f3693a7be02010 -r 3a0ef9068485da2d5ad7d6a5cba1f736aa3bfb8a src/main/java/edu/asu/commons/foraging/ui/InstructionsView.java --- a/src/main/java/edu/asu/commons/foraging/ui/InstructionsView.java +++ b/src/main/java/edu/asu/commons/foraging/ui/InstructionsView.java @@ -7,7 +7,6 @@ import edu.asu.commons.foraging.client.ClientDataModel; import edu.asu.commons.foraging.client.ForagingClient; -import edu.asu.commons.foraging.conf.RoundConfiguration; import edu.asu.commons.foraging.visualization.conceptual.AgentDesignPanel; import edu.asu.commons.foraging.visualization.forestry.AvatarDesignPanel; import edu.asu.commons.ui.HtmlEditorPane; diff -r 991ec958f3ab761ad151028c92f3693a7be02010 -r 3a0ef9068485da2d5ad7d6a5cba1f736aa3bfb8a src/test/java/edu/asu/commons/foraging/event/ResourcesAddedEventTest.java --- a/src/test/java/edu/asu/commons/foraging/event/ResourcesAddedEventTest.java +++ b/src/test/java/edu/asu/commons/foraging/event/ResourcesAddedEventTest.java @@ -1,7 +1,5 @@ package edu.asu.commons.foraging.event; -import static org.junit.Assert.*; - import java.awt.Point; import java.io.File; import java.io.FileInputStream; @@ -17,6 +15,7 @@ import edu.asu.commons.event.PersistableEvent; import edu.asu.commons.foraging.model.Resource; +import static org.junit.Assert.*; public class ResourcesAddedEventTest { diff -r 991ec958f3ab761ad151028c92f3693a7be02010 -r 3a0ef9068485da2d5ad7d6a5cba1f736aa3bfb8a src/test/java/edu/asu/commons/foraging/model/GroupDataModelTest.java --- a/src/test/java/edu/asu/commons/foraging/model/GroupDataModelTest.java +++ b/src/test/java/edu/asu/commons/foraging/model/GroupDataModelTest.java @@ -1,8 +1,5 @@ package edu.asu.commons.foraging.model; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -14,6 +11,7 @@ import edu.asu.commons.foraging.conf.RoundConfiguration; import edu.asu.commons.foraging.rules.iu.ForagingStrategy; import edu.asu.commons.net.Identifier; +import static org.junit.Assert.*; public class GroupDataModelTest { diff -r 991ec958f3ab761ad151028c92f3693a7be02010 -r 3a0ef9068485da2d5ad7d6a5cba1f736aa3bfb8a src/test/java/edu/asu/commons/foraging/model/ResourceDispenserTest.java --- a/src/test/java/edu/asu/commons/foraging/model/ResourceDispenserTest.java +++ b/src/test/java/edu/asu/commons/foraging/model/ResourceDispenserTest.java @@ -1,13 +1,12 @@ package edu.asu.commons.foraging.model; -import static org.junit.Assert.*; - import org.junit.After; import org.junit.Before; import org.junit.Test; import edu.asu.commons.foraging.conf.ServerConfiguration; import edu.asu.commons.net.Identifier; +import static org.junit.Assert.*; /** * $Id$ diff -r 991ec958f3ab761ad151028c92f3693a7be02010 -r 3a0ef9068485da2d5ad7d6a5cba1f736aa3bfb8a src/test/java/edu/asu/commons/foraging/model/ResourceTest.java --- a/src/test/java/edu/asu/commons/foraging/model/ResourceTest.java +++ b/src/test/java/edu/asu/commons/foraging/model/ResourceTest.java @@ -1,7 +1,5 @@ package edu.asu.commons.foraging.model; -import static org.junit.Assert.*; - import java.awt.Point; import java.util.HashSet; import java.util.Random; @@ -10,7 +8,7 @@ import org.junit.Before; import org.junit.Test; -import edu.asu.commons.foraging.model.Resource; +import static org.junit.Assert.*; public class ResourceTest { Repository URL: https://bitbucket.org/virtualcommons/foraging/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-15 21:25:18
|
1 new commit in foraging: https://bitbucket.org/virtualcommons/foraging/changeset/818b852040e6/ changeset: 818b852040e6 user: alllee date: 2012-02-15 22:25:04 summary: changing censored-chat-enabled property to inherit from the server config if it's not set in the round config affected #: 1 file diff -r 250b86fc5f82e0911d4cf1258e3d763894b43262 -r 818b852040e629ba347af23fbb74523b5b932ca6 src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java --- a/src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java +++ b/src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java @@ -570,7 +570,7 @@ } public boolean isCensoredChat() { - return getBooleanProperty("censored-chat-enabled", false); + return getBooleanProperty("censored-chat-enabled"); } /** Repository URL: https://bitbucket.org/virtualcommons/foraging/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-15 21:00:58
|
1 new commit in foraging: https://bitbucket.org/virtualcommons/foraging/changeset/250b86fc5f82/ changeset: 250b86fc5f82 user: alllee date: 2012-02-15 21:51:54 summary: organize imports affected #: 6 files diff -r 1ef642ae7c57cf465a5d036938d8ad6cf1804cd1 -r 250b86fc5f82e0911d4cf1258e3d763894b43262 src/main/java/edu/asu/commons/foraging/client/ForagingClient.java --- a/src/main/java/edu/asu/commons/foraging/client/ForagingClient.java +++ b/src/main/java/edu/asu/commons/foraging/client/ForagingClient.java @@ -2,14 +2,12 @@ import java.awt.BorderLayout; import java.awt.Color; -import java.awt.Frame; import java.util.LinkedList; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.UIManager; -import javax.swing.WindowConstants; import edu.asu.commons.client.BaseClient; import edu.asu.commons.event.ClientMessageEvent; diff -r 1ef642ae7c57cf465a5d036938d8ad6cf1804cd1 -r 250b86fc5f82e0911d4cf1258e3d763894b43262 src/main/java/edu/asu/commons/foraging/ui/InstructionsView.java --- a/src/main/java/edu/asu/commons/foraging/ui/InstructionsView.java +++ b/src/main/java/edu/asu/commons/foraging/ui/InstructionsView.java @@ -7,7 +7,6 @@ import edu.asu.commons.foraging.client.ClientDataModel; import edu.asu.commons.foraging.client.ForagingClient; -import edu.asu.commons.foraging.conf.RoundConfiguration; import edu.asu.commons.foraging.visualization.conceptual.AgentDesignPanel; import edu.asu.commons.foraging.visualization.forestry.AvatarDesignPanel; import edu.asu.commons.ui.HtmlEditorPane; diff -r 1ef642ae7c57cf465a5d036938d8ad6cf1804cd1 -r 250b86fc5f82e0911d4cf1258e3d763894b43262 src/test/java/edu/asu/commons/foraging/event/ResourcesAddedEventTest.java --- a/src/test/java/edu/asu/commons/foraging/event/ResourcesAddedEventTest.java +++ b/src/test/java/edu/asu/commons/foraging/event/ResourcesAddedEventTest.java @@ -1,7 +1,5 @@ package edu.asu.commons.foraging.event; -import static org.junit.Assert.*; - import java.awt.Point; import java.io.File; import java.io.FileInputStream; @@ -17,6 +15,7 @@ import edu.asu.commons.event.PersistableEvent; import edu.asu.commons.foraging.model.Resource; +import static org.junit.Assert.*; public class ResourcesAddedEventTest { diff -r 1ef642ae7c57cf465a5d036938d8ad6cf1804cd1 -r 250b86fc5f82e0911d4cf1258e3d763894b43262 src/test/java/edu/asu/commons/foraging/model/GroupDataModelTest.java --- a/src/test/java/edu/asu/commons/foraging/model/GroupDataModelTest.java +++ b/src/test/java/edu/asu/commons/foraging/model/GroupDataModelTest.java @@ -1,8 +1,5 @@ package edu.asu.commons.foraging.model; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -14,6 +11,7 @@ import edu.asu.commons.foraging.conf.RoundConfiguration; import edu.asu.commons.foraging.rules.iu.ForagingStrategy; import edu.asu.commons.net.Identifier; +import static org.junit.Assert.*; public class GroupDataModelTest { diff -r 1ef642ae7c57cf465a5d036938d8ad6cf1804cd1 -r 250b86fc5f82e0911d4cf1258e3d763894b43262 src/test/java/edu/asu/commons/foraging/model/ResourceDispenserTest.java --- a/src/test/java/edu/asu/commons/foraging/model/ResourceDispenserTest.java +++ b/src/test/java/edu/asu/commons/foraging/model/ResourceDispenserTest.java @@ -1,13 +1,12 @@ package edu.asu.commons.foraging.model; -import static org.junit.Assert.*; - import org.junit.After; import org.junit.Before; import org.junit.Test; import edu.asu.commons.foraging.conf.ServerConfiguration; import edu.asu.commons.net.Identifier; +import static org.junit.Assert.*; /** * $Id$ diff -r 1ef642ae7c57cf465a5d036938d8ad6cf1804cd1 -r 250b86fc5f82e0911d4cf1258e3d763894b43262 src/test/java/edu/asu/commons/foraging/model/ResourceTest.java --- a/src/test/java/edu/asu/commons/foraging/model/ResourceTest.java +++ b/src/test/java/edu/asu/commons/foraging/model/ResourceTest.java @@ -1,7 +1,5 @@ package edu.asu.commons.foraging.model; -import static org.junit.Assert.*; - import java.awt.Point; import java.util.HashSet; import java.util.Random; @@ -10,7 +8,7 @@ import org.junit.Before; import org.junit.Test; -import edu.asu.commons.foraging.model.Resource; +import static org.junit.Assert.*; public class ResourceTest { Repository URL: https://bitbucket.org/virtualcommons/foraging/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-15 20:40:27
|
1 new commit in irrigation: https://bitbucket.org/virtualcommons/irrigation/changeset/c5dbf36f030b/ changeset: c5dbf36f030b user: alllee date: 2012-02-15 21:40:14 summary: renaming copy -> clone to conform with updated csidex api affected #: 4 files diff -r 087d7606aa384efd27df6a04ea969fe0cbba1a9e -r c5dbf36f030b674e304772a1ad4d2d3ea27bde78 src/main/java/edu/asu/commons/irrigation/events/ShowGameScreenshotRequest.java --- a/src/main/java/edu/asu/commons/irrigation/events/ShowGameScreenshotRequest.java +++ b/src/main/java/edu/asu/commons/irrigation/events/ShowGameScreenshotRequest.java @@ -13,7 +13,7 @@ } @Override - public ShowGameScreenshotRequest copy(Identifier id) { + public ShowGameScreenshotRequest clone(Identifier id) { return new ShowGameScreenshotRequest(id); } diff -r 087d7606aa384efd27df6a04ea969fe0cbba1a9e -r c5dbf36f030b674e304772a1ad4d2d3ea27bde78 src/main/java/edu/asu/commons/irrigation/events/ShowQuizRequest.java --- a/src/main/java/edu/asu/commons/irrigation/events/ShowQuizRequest.java +++ b/src/main/java/edu/asu/commons/irrigation/events/ShowQuizRequest.java @@ -21,7 +21,7 @@ } @Override - public ShowQuizRequest copy(Identifier id) { + public ShowQuizRequest clone(Identifier id) { return new ShowQuizRequest(id); } diff -r 087d7606aa384efd27df6a04ea969fe0cbba1a9e -r c5dbf36f030b674e304772a1ad4d2d3ea27bde78 src/main/java/edu/asu/commons/irrigation/events/ShowTokenInvestmentScreenRequest.java --- a/src/main/java/edu/asu/commons/irrigation/events/ShowTokenInvestmentScreenRequest.java +++ b/src/main/java/edu/asu/commons/irrigation/events/ShowTokenInvestmentScreenRequest.java @@ -13,7 +13,7 @@ } @Override - public ShowTokenInvestmentScreenRequest copy(Identifier id) { + public ShowTokenInvestmentScreenRequest clone(Identifier id) { return new ShowTokenInvestmentScreenRequest(id); } } diff -r 087d7606aa384efd27df6a04ea969fe0cbba1a9e -r c5dbf36f030b674e304772a1ad4d2d3ea27bde78 src/main/java/edu/asu/commons/irrigation/server/IrrigationServer.java --- a/src/main/java/edu/asu/commons/irrigation/server/IrrigationServer.java +++ b/src/main/java/edu/asu/commons/irrigation/server/IrrigationServer.java @@ -156,7 +156,7 @@ if (request.getId().equals(getFacilitatorId())) { synchronized (clients) { for (Identifier id: clients.keySet()) { - transmit(request.copy(id)); + transmit(request.clone(id)); } } } Repository URL: https://bitbucket.org/virtualcommons/irrigation/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-15 20:36:19
|
1 new commit in foraging: https://bitbucket.org/virtualcommons/foraging/changeset/991ec958f3ab/ changeset: 991ec958f3ab branch: stable user: alllee date: 2012-02-15 21:36:05 summary: merging with default affected #: 13 files diff -r d95ed5c0ebd91cbeae7c1f529a2d1fe3255e7107 -r 991ec958f3ab761ad151028c92f3693a7be02010 src/main/java/edu/asu/commons/foraging/event/ShowFinalRoundDebriefingRequest.java --- a/src/main/java/edu/asu/commons/foraging/event/ShowFinalRoundDebriefingRequest.java +++ b/src/main/java/edu/asu/commons/foraging/event/ShowFinalRoundDebriefingRequest.java @@ -21,7 +21,7 @@ } @Override - public ShowFinalRoundDebriefingRequest copy(Identifier id) { + public ShowFinalRoundDebriefingRequest clone(Identifier id) { return new ShowFinalRoundDebriefingRequest(id); } } diff -r d95ed5c0ebd91cbeae7c1f529a2d1fe3255e7107 -r 991ec958f3ab761ad151028c92f3693a7be02010 src/main/java/edu/asu/commons/foraging/event/ShowSurveyInstructionsRequest.java --- a/src/main/java/edu/asu/commons/foraging/event/ShowSurveyInstructionsRequest.java +++ b/src/main/java/edu/asu/commons/foraging/event/ShowSurveyInstructionsRequest.java @@ -13,7 +13,7 @@ } @Override - public ShowSurveyInstructionsRequest copy(Identifier id) { + public ShowSurveyInstructionsRequest clone(Identifier id) { return new ShowSurveyInstructionsRequest(id); } } diff -r d95ed5c0ebd91cbeae7c1f529a2d1fe3255e7107 -r 991ec958f3ab761ad151028c92f3693a7be02010 src/main/java/edu/asu/commons/foraging/event/ShowTrustGameRequest.java --- a/src/main/java/edu/asu/commons/foraging/event/ShowTrustGameRequest.java +++ b/src/main/java/edu/asu/commons/foraging/event/ShowTrustGameRequest.java @@ -13,7 +13,7 @@ } @Override - public ShowTrustGameRequest copy(Identifier id) { + public ShowTrustGameRequest clone(Identifier id) { return new ShowTrustGameRequest(id); } } diff -r d95ed5c0ebd91cbeae7c1f529a2d1fe3255e7107 -r 991ec958f3ab761ad151028c92f3693a7be02010 src/main/java/edu/asu/commons/foraging/event/ShowVoteScreenRequest.java --- a/src/main/java/edu/asu/commons/foraging/event/ShowVoteScreenRequest.java +++ b/src/main/java/edu/asu/commons/foraging/event/ShowVoteScreenRequest.java @@ -13,7 +13,7 @@ } @Override - public ShowVoteScreenRequest copy(Identifier id) { + public ShowVoteScreenRequest clone(Identifier id) { return new ShowVoteScreenRequest(id); } } diff -r d95ed5c0ebd91cbeae7c1f529a2d1fe3255e7107 -r 991ec958f3ab761ad151028c92f3693a7be02010 src/main/java/edu/asu/commons/foraging/event/ShowVotingInstructionsRequest.java --- a/src/main/java/edu/asu/commons/foraging/event/ShowVotingInstructionsRequest.java +++ b/src/main/java/edu/asu/commons/foraging/event/ShowVotingInstructionsRequest.java @@ -12,7 +12,7 @@ super(id); } @Override - public ShowVotingInstructionsRequest copy(Identifier id) { + public ShowVotingInstructionsRequest clone(Identifier id) { return new ShowVotingInstructionsRequest(id); } } diff -r d95ed5c0ebd91cbeae7c1f529a2d1fe3255e7107 -r 991ec958f3ab761ad151028c92f3693a7be02010 src/main/java/edu/asu/commons/foraging/server/ForagingServer.java --- a/src/main/java/edu/asu/commons/foraging/server/ForagingServer.java +++ b/src/main/java/edu/asu/commons/foraging/server/ForagingServer.java @@ -21,7 +21,6 @@ import edu.asu.commons.event.ClientReadyEvent; import edu.asu.commons.event.EndRoundRequest; import edu.asu.commons.event.EventTypeProcessor; -import edu.asu.commons.event.FacilitatorMessageEvent; import edu.asu.commons.event.FacilitatorRegistrationRequest; import edu.asu.commons.event.RoundStartedMarkerEvent; import edu.asu.commons.event.SetConfigurationEvent; @@ -595,7 +594,7 @@ return; } for (Identifier id : clients.keySet()) { - transmit(request.copy(id)); + transmit(request.clone(id)); } } }); @@ -660,7 +659,7 @@ sendFacilitatorMessage(String.format("Received trust game submission %s (%d total)", request, numberOfSubmissions)); } else { - warnFacilitator("Received trust game submission request but trust game wasn't enabled: " + request); + sendFacilitatorMessage("Received trust game submission request but trust game wasn't enabled: " + request); } if (numberOfSubmissions >= clients.size()) { // once all clients have submitted their decisions, execute the trust game. @@ -771,20 +770,6 @@ } } - private void sendFacilitatorMessage(String message) { - getLogger().info(message); - if (facilitatorId != null) { - transmit(new FacilitatorMessageEvent(facilitatorId, message)); - } - } - - private void warnFacilitator(String message) { - getLogger().warning(message); - if (facilitatorId != null) { - transmit(new FacilitatorMessageEvent(facilitatorId, "!. " + message)); - } - } - // FIXME: remove Dispatcher reference if it's unused. public void execute(Dispatcher dispatcher) { switch (serverState) { @@ -844,7 +829,8 @@ startRound(); break; default: - throw new RuntimeException("Should never get here."); + sendFacilitatorMessage("Invalid server state, this is a serious error.", new IllegalStateException("Invalid server state: " + serverState)); + break; } } diff -r d95ed5c0ebd91cbeae7c1f529a2d1fe3255e7107 -r 991ec958f3ab761ad151028c92f3693a7be02010 src/main/resources/configuration/stockholm/censored-chat/round0.xml --- a/src/main/resources/configuration/stockholm/censored-chat/round0.xml +++ b/src/main/resources/configuration/stockholm/censored-chat/round0.xml @@ -8,9 +8,6 @@ <entry key="private-property">true</entry><entry key="duration">240</entry> -<entry key='tokens-field-of-vision'>true</entry> -<entry key='subjects-field-of-vision'>true</entry> - <entry key="quiz">true</entry><entry key="q1">C</entry><entry key="q2">B</entry> diff -r d95ed5c0ebd91cbeae7c1f529a2d1fe3255e7107 -r 991ec958f3ab761ad151028c92f3693a7be02010 src/main/resources/configuration/stockholm/censored-chat/round1.xml --- a/src/main/resources/configuration/stockholm/censored-chat/round1.xml +++ b/src/main/resources/configuration/stockholm/censored-chat/round1.xml @@ -8,9 +8,6 @@ <entry key="resource-depth">29</entry><entry key="resource-width">29</entry> -<entry key='tokens-field-of-vision'>true</entry> -<entry key='subjects-field-of-vision'>true</entry> - <entry key='always-explicit'>true</entry><entry key='max-cell-occupancy'>1</entry> @@ -38,13 +35,6 @@ with a white number embedded in the dot. </p><p> - Your vision will be limited in this experiment and you might not see all the - other participants or all the resource units depending on your position and the - position of the other members of your group. The figure below indicates the - vision range compared to the whole environment. -</p> -<img src="@CODEBASE_URL@/images/vision-range.jpg"> -<p> In each round of the token task, you can see how many tokens each player has collected at the top right corner of the screen. On the top left corner of the screen you will see the remaining time in the round. diff -r d95ed5c0ebd91cbeae7c1f529a2d1fe3255e7107 -r 991ec958f3ab761ad151028c92f3693a7be02010 src/main/resources/configuration/stockholm/censored-chat/round2.xml --- a/src/main/resources/configuration/stockholm/censored-chat/round2.xml +++ b/src/main/resources/configuration/stockholm/censored-chat/round2.xml @@ -7,13 +7,7 @@ <entry key="duration">240</entry><entry key="resource-depth">29</entry><entry key="resource-width">29</entry> - -<!-- enable field of vision for tokens and subjects --><entry key='initial-distribution'>.25</entry> - -<entry key='tokens-field-of-vision'>true</entry> -<entry key='subjects-field-of-vision'>true</entry> - <entry key='always-explicit'>true</entry><entry key='max-cell-occupancy'>1</entry></properties> diff -r d95ed5c0ebd91cbeae7c1f529a2d1fe3255e7107 -r 991ec958f3ab761ad151028c92f3693a7be02010 src/main/resources/configuration/stockholm/censored-chat/round3.xml --- a/src/main/resources/configuration/stockholm/censored-chat/round3.xml +++ b/src/main/resources/configuration/stockholm/censored-chat/round3.xml @@ -7,11 +7,6 @@ <entry key="duration">240</entry><entry key="resource-depth">29</entry><entry key="resource-width">29</entry> - -<!-- enable field of vision for tokens and subjects --> -<entry key='tokens-field-of-vision'>true</entry> -<entry key='subjects-field-of-vision'>true</entry> - <entry key='always-explicit'>true</entry><entry key='max-cell-occupancy'>1</entry><!-- resource regrowth parameters --> diff -r d95ed5c0ebd91cbeae7c1f529a2d1fe3255e7107 -r 991ec958f3ab761ad151028c92f3693a7be02010 src/main/resources/configuration/stockholm/censored-chat/round4.xml --- a/src/main/resources/configuration/stockholm/censored-chat/round4.xml +++ b/src/main/resources/configuration/stockholm/censored-chat/round4.xml @@ -7,26 +7,16 @@ <entry key="resource-depth">29</entry><entry key="resource-width">29</entry><entry key="duration">240</entry> - -<!-- enable field of vision for tokens and subjects --> -<entry key='tokens-field-of-vision'>true</entry> -<entry key='subjects-field-of-vision'>true</entry> - <entry key='always-explicit'>true</entry><entry key='max-cell-occupancy'>1</entry> - <!-- before this round begins, we have a chat session --><entry key='censored-chat-enabled'>true</entry><entry key='chat-enabled'>true</entry> - <!-- enable sanctioning --><entry key="sanction-type">real-time</entry><entry key="sanction-cost">1</entry><entry key="sanction-multiplier">2</entry> - - <entry key="initial-distribution">.25</entry> - <!-- sanctioning quiz --><entry key='quiz'>false</entry><entry key='q1'>B</entry> diff -r d95ed5c0ebd91cbeae7c1f529a2d1fe3255e7107 -r 991ec958f3ab761ad151028c92f3693a7be02010 src/main/resources/configuration/stockholm/censored-chat/round5.xml --- a/src/main/resources/configuration/stockholm/censored-chat/round5.xml +++ b/src/main/resources/configuration/stockholm/censored-chat/round5.xml @@ -7,21 +7,13 @@ <entry key="resource-depth">29</entry><entry key="resource-width">29</entry><entry key="duration">240</entry> - -<!-- enable field of vision for tokens and subjects --> -<entry key='tokens-field-of-vision'>true</entry> -<entry key='subjects-field-of-vision'>true</entry> - <!-- enable sanctioning --><entry key="sanction-type">real-time</entry><entry key="sanction-cost">1</entry><entry key="sanction-multiplier">2</entry> - <entry key="initial-distribution">.25</entry> - <entry key='always-explicit'>true</entry><entry key='max-cell-occupancy'>1</entry> - <!-- enable censored chat session before this round --><entry key='censored-chat-enabled'>true</entry><entry key='chat-enabled'>true</entry> diff -r d95ed5c0ebd91cbeae7c1f529a2d1fe3255e7107 -r 991ec958f3ab761ad151028c92f3693a7be02010 src/main/resources/configuration/stockholm/censored-chat/round6.xml --- a/src/main/resources/configuration/stockholm/censored-chat/round6.xml +++ b/src/main/resources/configuration/stockholm/censored-chat/round6.xml @@ -7,20 +7,14 @@ <entry key="resource-depth">29</entry><entry key="resource-width">29</entry><entry key="duration">240</entry> - -<entry key='tokens-field-of-vision'>true</entry> -<entry key='subjects-field-of-vision'>true</entry><!-- enable sanctioning --><entry key="sanction-type">real-time</entry><entry key="sanction-cost">1</entry><entry key="sanction-multiplier">2</entry> - <entry key="initial-distribution">.25</entry> - <entry key='always-explicit'>true</entry><entry key='max-cell-occupancy'>1</entry> - -<!-- before this round begins, we have a chat session --> +<!-- enable censored chat--><entry key='censored-chat-enabled'>true</entry><entry key='chat-enabled'>true</entry></properties> Repository URL: https://bitbucket.org/virtualcommons/foraging/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-15 20:36:02
|
1 new commit in foraging: https://bitbucket.org/virtualcommons/foraging/changeset/1ef642ae7c57/ changeset: 1ef642ae7c57 user: alllee date: 2012-02-15 21:35:48 summary: minor cleanup to reflect changes in csidex api affected #: 6 files diff -r 988df1d1247859ffe0c1789964035dcb52dd8a48 -r 1ef642ae7c57cf465a5d036938d8ad6cf1804cd1 src/main/java/edu/asu/commons/foraging/event/ShowFinalRoundDebriefingRequest.java --- a/src/main/java/edu/asu/commons/foraging/event/ShowFinalRoundDebriefingRequest.java +++ b/src/main/java/edu/asu/commons/foraging/event/ShowFinalRoundDebriefingRequest.java @@ -21,7 +21,7 @@ } @Override - public ShowFinalRoundDebriefingRequest copy(Identifier id) { + public ShowFinalRoundDebriefingRequest clone(Identifier id) { return new ShowFinalRoundDebriefingRequest(id); } } diff -r 988df1d1247859ffe0c1789964035dcb52dd8a48 -r 1ef642ae7c57cf465a5d036938d8ad6cf1804cd1 src/main/java/edu/asu/commons/foraging/event/ShowSurveyInstructionsRequest.java --- a/src/main/java/edu/asu/commons/foraging/event/ShowSurveyInstructionsRequest.java +++ b/src/main/java/edu/asu/commons/foraging/event/ShowSurveyInstructionsRequest.java @@ -13,7 +13,7 @@ } @Override - public ShowSurveyInstructionsRequest copy(Identifier id) { + public ShowSurveyInstructionsRequest clone(Identifier id) { return new ShowSurveyInstructionsRequest(id); } } diff -r 988df1d1247859ffe0c1789964035dcb52dd8a48 -r 1ef642ae7c57cf465a5d036938d8ad6cf1804cd1 src/main/java/edu/asu/commons/foraging/event/ShowTrustGameRequest.java --- a/src/main/java/edu/asu/commons/foraging/event/ShowTrustGameRequest.java +++ b/src/main/java/edu/asu/commons/foraging/event/ShowTrustGameRequest.java @@ -13,7 +13,7 @@ } @Override - public ShowTrustGameRequest copy(Identifier id) { + public ShowTrustGameRequest clone(Identifier id) { return new ShowTrustGameRequest(id); } } diff -r 988df1d1247859ffe0c1789964035dcb52dd8a48 -r 1ef642ae7c57cf465a5d036938d8ad6cf1804cd1 src/main/java/edu/asu/commons/foraging/event/ShowVoteScreenRequest.java --- a/src/main/java/edu/asu/commons/foraging/event/ShowVoteScreenRequest.java +++ b/src/main/java/edu/asu/commons/foraging/event/ShowVoteScreenRequest.java @@ -13,7 +13,7 @@ } @Override - public ShowVoteScreenRequest copy(Identifier id) { + public ShowVoteScreenRequest clone(Identifier id) { return new ShowVoteScreenRequest(id); } } diff -r 988df1d1247859ffe0c1789964035dcb52dd8a48 -r 1ef642ae7c57cf465a5d036938d8ad6cf1804cd1 src/main/java/edu/asu/commons/foraging/event/ShowVotingInstructionsRequest.java --- a/src/main/java/edu/asu/commons/foraging/event/ShowVotingInstructionsRequest.java +++ b/src/main/java/edu/asu/commons/foraging/event/ShowVotingInstructionsRequest.java @@ -12,7 +12,7 @@ super(id); } @Override - public ShowVotingInstructionsRequest copy(Identifier id) { + public ShowVotingInstructionsRequest clone(Identifier id) { return new ShowVotingInstructionsRequest(id); } } diff -r 988df1d1247859ffe0c1789964035dcb52dd8a48 -r 1ef642ae7c57cf465a5d036938d8ad6cf1804cd1 src/main/java/edu/asu/commons/foraging/server/ForagingServer.java --- a/src/main/java/edu/asu/commons/foraging/server/ForagingServer.java +++ b/src/main/java/edu/asu/commons/foraging/server/ForagingServer.java @@ -21,7 +21,6 @@ import edu.asu.commons.event.ClientReadyEvent; import edu.asu.commons.event.EndRoundRequest; import edu.asu.commons.event.EventTypeProcessor; -import edu.asu.commons.event.FacilitatorMessageEvent; import edu.asu.commons.event.FacilitatorRegistrationRequest; import edu.asu.commons.event.RoundStartedMarkerEvent; import edu.asu.commons.event.SetConfigurationEvent; @@ -595,7 +594,7 @@ return; } for (Identifier id : clients.keySet()) { - transmit(request.copy(id)); + transmit(request.clone(id)); } } }); @@ -660,7 +659,7 @@ sendFacilitatorMessage(String.format("Received trust game submission %s (%d total)", request, numberOfSubmissions)); } else { - warnFacilitator("Received trust game submission request but trust game wasn't enabled: " + request); + sendFacilitatorMessage("Received trust game submission request but trust game wasn't enabled: " + request); } if (numberOfSubmissions >= clients.size()) { // once all clients have submitted their decisions, execute the trust game. @@ -771,20 +770,6 @@ } } - private void sendFacilitatorMessage(String message) { - getLogger().info(message); - if (facilitatorId != null) { - transmit(new FacilitatorMessageEvent(facilitatorId, message)); - } - } - - private void warnFacilitator(String message) { - getLogger().warning(message); - if (facilitatorId != null) { - transmit(new FacilitatorMessageEvent(facilitatorId, "!. " + message)); - } - } - // FIXME: remove Dispatcher reference if it's unused. public void execute(Dispatcher dispatcher) { switch (serverState) { @@ -844,7 +829,8 @@ startRound(); break; default: - throw new RuntimeException("Should never get here."); + sendFacilitatorMessage("Invalid server state, this is a serious error.", new IllegalStateException("Invalid server state: " + serverState)); + break; } } Repository URL: https://bitbucket.org/virtualcommons/foraging/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-15 20:02:38
|
1 new commit in foraging: https://bitbucket.org/virtualcommons/foraging/changeset/988df1d12478/ changeset: 988df1d12478 user: alllee date: 2012-02-15 21:02:20 summary: removing limited vision from stockholm censored chat treatment affected #: 7 files diff -r 95fcd4147fe8170445a5b5bf54c23c6e7b47bd4d -r 988df1d1247859ffe0c1789964035dcb52dd8a48 src/main/resources/configuration/stockholm/censored-chat/round0.xml --- a/src/main/resources/configuration/stockholm/censored-chat/round0.xml +++ b/src/main/resources/configuration/stockholm/censored-chat/round0.xml @@ -8,9 +8,6 @@ <entry key="private-property">true</entry><entry key="duration">240</entry> -<entry key='tokens-field-of-vision'>true</entry> -<entry key='subjects-field-of-vision'>true</entry> - <entry key="quiz">true</entry><entry key="q1">C</entry><entry key="q2">B</entry> diff -r 95fcd4147fe8170445a5b5bf54c23c6e7b47bd4d -r 988df1d1247859ffe0c1789964035dcb52dd8a48 src/main/resources/configuration/stockholm/censored-chat/round1.xml --- a/src/main/resources/configuration/stockholm/censored-chat/round1.xml +++ b/src/main/resources/configuration/stockholm/censored-chat/round1.xml @@ -8,9 +8,6 @@ <entry key="resource-depth">29</entry><entry key="resource-width">29</entry> -<entry key='tokens-field-of-vision'>true</entry> -<entry key='subjects-field-of-vision'>true</entry> - <entry key='always-explicit'>true</entry><entry key='max-cell-occupancy'>1</entry> @@ -38,13 +35,6 @@ with a white number embedded in the dot. </p><p> - Your vision will be limited in this experiment and you might not see all the - other participants or all the resource units depending on your position and the - position of the other members of your group. The figure below indicates the - vision range compared to the whole environment. -</p> -<img src="@CODEBASE_URL@/images/vision-range.jpg"> -<p> In each round of the token task, you can see how many tokens each player has collected at the top right corner of the screen. On the top left corner of the screen you will see the remaining time in the round. diff -r 95fcd4147fe8170445a5b5bf54c23c6e7b47bd4d -r 988df1d1247859ffe0c1789964035dcb52dd8a48 src/main/resources/configuration/stockholm/censored-chat/round2.xml --- a/src/main/resources/configuration/stockholm/censored-chat/round2.xml +++ b/src/main/resources/configuration/stockholm/censored-chat/round2.xml @@ -7,13 +7,7 @@ <entry key="duration">240</entry><entry key="resource-depth">29</entry><entry key="resource-width">29</entry> - -<!-- enable field of vision for tokens and subjects --><entry key='initial-distribution'>.25</entry> - -<entry key='tokens-field-of-vision'>true</entry> -<entry key='subjects-field-of-vision'>true</entry> - <entry key='always-explicit'>true</entry><entry key='max-cell-occupancy'>1</entry></properties> diff -r 95fcd4147fe8170445a5b5bf54c23c6e7b47bd4d -r 988df1d1247859ffe0c1789964035dcb52dd8a48 src/main/resources/configuration/stockholm/censored-chat/round3.xml --- a/src/main/resources/configuration/stockholm/censored-chat/round3.xml +++ b/src/main/resources/configuration/stockholm/censored-chat/round3.xml @@ -7,11 +7,6 @@ <entry key="duration">240</entry><entry key="resource-depth">29</entry><entry key="resource-width">29</entry> - -<!-- enable field of vision for tokens and subjects --> -<entry key='tokens-field-of-vision'>true</entry> -<entry key='subjects-field-of-vision'>true</entry> - <entry key='always-explicit'>true</entry><entry key='max-cell-occupancy'>1</entry><!-- resource regrowth parameters --> diff -r 95fcd4147fe8170445a5b5bf54c23c6e7b47bd4d -r 988df1d1247859ffe0c1789964035dcb52dd8a48 src/main/resources/configuration/stockholm/censored-chat/round4.xml --- a/src/main/resources/configuration/stockholm/censored-chat/round4.xml +++ b/src/main/resources/configuration/stockholm/censored-chat/round4.xml @@ -7,26 +7,16 @@ <entry key="resource-depth">29</entry><entry key="resource-width">29</entry><entry key="duration">240</entry> - -<!-- enable field of vision for tokens and subjects --> -<entry key='tokens-field-of-vision'>true</entry> -<entry key='subjects-field-of-vision'>true</entry> - <entry key='always-explicit'>true</entry><entry key='max-cell-occupancy'>1</entry> - <!-- before this round begins, we have a chat session --><entry key='censored-chat-enabled'>true</entry><entry key='chat-enabled'>true</entry> - <!-- enable sanctioning --><entry key="sanction-type">real-time</entry><entry key="sanction-cost">1</entry><entry key="sanction-multiplier">2</entry> - - <entry key="initial-distribution">.25</entry> - <!-- sanctioning quiz --><entry key='quiz'>false</entry><entry key='q1'>B</entry> diff -r 95fcd4147fe8170445a5b5bf54c23c6e7b47bd4d -r 988df1d1247859ffe0c1789964035dcb52dd8a48 src/main/resources/configuration/stockholm/censored-chat/round5.xml --- a/src/main/resources/configuration/stockholm/censored-chat/round5.xml +++ b/src/main/resources/configuration/stockholm/censored-chat/round5.xml @@ -7,21 +7,13 @@ <entry key="resource-depth">29</entry><entry key="resource-width">29</entry><entry key="duration">240</entry> - -<!-- enable field of vision for tokens and subjects --> -<entry key='tokens-field-of-vision'>true</entry> -<entry key='subjects-field-of-vision'>true</entry> - <!-- enable sanctioning --><entry key="sanction-type">real-time</entry><entry key="sanction-cost">1</entry><entry key="sanction-multiplier">2</entry> - <entry key="initial-distribution">.25</entry> - <entry key='always-explicit'>true</entry><entry key='max-cell-occupancy'>1</entry> - <!-- enable censored chat session before this round --><entry key='censored-chat-enabled'>true</entry><entry key='chat-enabled'>true</entry> diff -r 95fcd4147fe8170445a5b5bf54c23c6e7b47bd4d -r 988df1d1247859ffe0c1789964035dcb52dd8a48 src/main/resources/configuration/stockholm/censored-chat/round6.xml --- a/src/main/resources/configuration/stockholm/censored-chat/round6.xml +++ b/src/main/resources/configuration/stockholm/censored-chat/round6.xml @@ -7,20 +7,14 @@ <entry key="resource-depth">29</entry><entry key="resource-width">29</entry><entry key="duration">240</entry> - -<entry key='tokens-field-of-vision'>true</entry> -<entry key='subjects-field-of-vision'>true</entry><!-- enable sanctioning --><entry key="sanction-type">real-time</entry><entry key="sanction-cost">1</entry><entry key="sanction-multiplier">2</entry> - <entry key="initial-distribution">.25</entry> - <entry key='always-explicit'>true</entry><entry key='max-cell-occupancy'>1</entry> - -<!-- before this round begins, we have a chat session --> +<!-- enable censored chat--><entry key='censored-chat-enabled'>true</entry><entry key='chat-enabled'>true</entry></properties> Repository URL: https://bitbucket.org/virtualcommons/foraging/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-15 18:04:56
|
1 new commit in irrigation: https://bitbucket.org/virtualcommons/irrigation/changeset/087d7606aa38/ changeset: 087d7606aa38 user: alllee date: 2012-02-15 19:04:41 summary: marking participant as (You) in token contribution results panel affected #: 1 file diff -r 6195dd318bea07a2985108de25816564583c4bcb -r 087d7606aa384efd27df6a04ea969fe0cbba1a9e src/main/java/edu/asu/commons/irrigation/client/TokenContributionChartPanel.java --- a/src/main/java/edu/asu/commons/irrigation/client/TokenContributionChartPanel.java +++ b/src/main/java/edu/asu/commons/irrigation/client/TokenContributionChartPanel.java @@ -67,7 +67,11 @@ DefaultCategoryDataset dataset = new DefaultCategoryDataset(); List<ClientData> neighbors = clientDataModel.getOrderedVisibleClients(); for (ClientData neighbor: neighbors) { - dataset.addValue(neighbor.getInvestedTokens(), "Tokens Invested", neighbor.getPriorityString()); + StringBuilder participant = new StringBuilder(neighbor.getPriorityString()); + if (neighbor.getId().equals(clientDataModel.getId())) { + participant.append(" (You)"); + } + dataset.addValue(neighbor.getInvestedTokens(), "Tokens Invested", participant.toString()); } return dataset; } Repository URL: https://bitbucket.org/virtualcommons/irrigation/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-15 17:54:26
|
1 new commit in irrigation: https://bitbucket.org/virtualcommons/irrigation/changeset/6195dd318bea/ changeset: 6195dd318bea user: alllee date: 2012-02-15 18:54:09 summary: fixing instructions affected #: 1 file diff -r e60c4caa9426d43dea17ad31c2703c3a5a605d6f -r 6195dd318bea07a2985108de25816564583c4bcb src/main/resources/configuration/asu/2011/pretest/irrigation.xml --- a/src/main/resources/configuration/asu/2011/pretest/irrigation.xml +++ b/src/main/resources/configuration/asu/2011/pretest/irrigation.xml @@ -450,7 +450,7 @@ <td>Before Investment</td><td>{groupDataModel.infrastructureEfficiencyBeforeInvestment}%</td><td>{groupDataModel.irrigationCapacityBeforeInvestment} cubic feet per second</td><td>{groupDataModel.actualWaterDeliveryCapacity}</td></tr><tr> -<td>After Investment</td><td>{groupDataModel.infrastructureEfficiency}%</td><td>{groupDataModel.irrigationCapacity} cubic feet per second</td><td>{groupDataModel.actualWaterDeliveryCapacity}</td> +<td>After Investment</td><td>{groupDataModel.infrastructureEfficiency}%</td><td>{groupDataModel.irrigationCapacity} cubic feet per second</td><td>{groupDataModel.actualWaterDeliveryCapacity} cubic feet per second</td></tr></table> ]]> Repository URL: https://bitbucket.org/virtualcommons/irrigation/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-15 17:25:52
|
1 new commit in irrigation: https://bitbucket.org/virtualcommons/irrigation/changeset/e60c4caa9426/ changeset: e60c4caa9426 user: alllee date: 2012-02-15 18:25:37 summary: moving quiz earnings from table to earnings text affected #: 1 file diff -r ec370a32a23df8c961e543e35d838af608ba7fe5 -r e60c4caa9426d43dea17ad31c2703c3a5a605d6f src/main/resources/configuration/asu/2011/pretest/irrigation.xml --- a/src/main/resources/configuration/asu/2011/pretest/irrigation.xml +++ b/src/main/resources/configuration/asu/2011/pretest/irrigation.xml @@ -380,7 +380,6 @@ <th>Tokens earned from growing crops</th><th>Total tokens earned this round</th><th>Dollars earned this round</th> - <th>Quiz earnings</th><th>Total dollars earned</th></tr> {dataModel.orderedVisibleClients: {clientData| @@ -392,15 +391,17 @@ <td>{clientData.tokensEarnedFromWaterCollected}</td><td>{clientData.allTokensEarnedThisRound}</td><td>{clientData.totalDollarsEarnedThisRound}</td> - <td>{clientData.quizEarnings}</td><td>{clientData.grandTotalIncome}</td></tr> }} </table><h2>Earnings</h2><hr> - <p>You are in position {clientData.priorityString} and received {clientData.totalDollarsEarnedThisRound} this past round. - Your <b>total income</b> is <b>{clientData.grandTotalIncome}</b>, including the {showUpPayment} show-up bonus.</p> + <p>You are in position {clientData.priorityString} and received + {clientData.totalDollarsEarnedThisRound} this past round. Your + <b>total income</b> is <b>{clientData.grandTotalIncome}</b>, including the + {showUpPayment} show-up bonus and {clientData.quizEarnings} for + answering {clientData.correctQuizAnswers} quiz questions correctly.</p> {if (showExitInstructions)} <h2>Exit Survey</h2><hr> Repository URL: https://bitbucket.org/virtualcommons/irrigation/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |
From: Bitbucket <com...@bi...> - 2012-02-15 07:36:20
|
1 new commit in irrigation: https://bitbucket.org/virtualcommons/irrigation/changeset/ec370a32a23d/ changeset: ec370a32a23d user: alllee date: 2012-02-15 08:36:04 summary: updating screenshot link affected #: 3 files diff -r 2ebf6e29ed8eff347554ba942d2f4b05476b1e4a -r ec370a32a23df8c961e543e35d838af608ba7fe5 src/main/resources/configuration/asu/2011/pretest/irrigation.xml --- a/src/main/resources/configuration/asu/2011/pretest/irrigation.xml +++ b/src/main/resources/configuration/asu/2011/pretest/irrigation.xml @@ -120,7 +120,7 @@ <entry key='game-screenshot-instructions'><![CDATA[ -<img src="http://dev.commons.asu.edu/irrigation/images/game-interface-screenshot.jpg"> +<img src="http://dev.commons.asu.edu/irrigation/images/screenshot.jpg"> ]]></entry> diff -r 2ebf6e29ed8eff347554ba942d2f4b05476b1e4a -r ec370a32a23df8c961e543e35d838af608ba7fe5 src/main/resources/images/irrigation-screenshot.jpg Binary file src/main/resources/images/irrigation-screenshot.jpg has changed diff -r 2ebf6e29ed8eff347554ba942d2f4b05476b1e4a -r ec370a32a23df8c961e543e35d838af608ba7fe5 src/main/resources/images/screenshot.jpg Binary file src/main/resources/images/screenshot.jpg has changed Repository URL: https://bitbucket.org/virtualcommons/irrigation/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |