# HG changeset patch # User Jaroslav Tulach # Date 1284727959 25200 # Node ID 430ab68846fa6c40ec6f8dba13d55b7fc6f3c8af # Parent 13fe01081e23d12f71b447554b903d6cc44a2863 Make the boards editable and submit moves to the quoridor server diff -r 13fe01081e23 -r 430ab68846fa desktop/desktop-sample/src/main/java/cz/xelfi/quoridor/desktop/sample/KukTopComponent.form --- a/desktop/desktop-sample/src/main/java/cz/xelfi/quoridor/desktop/sample/KukTopComponent.form Tue Sep 14 09:58:04 2010 +0200 +++ b/desktop/desktop-sample/src/main/java/cz/xelfi/quoridor/desktop/sample/KukTopComponent.form Fri Sep 17 05:52:39 2010 -0700 @@ -50,6 +50,9 @@ + + + diff -r 13fe01081e23 -r 430ab68846fa desktop/desktop-sample/src/main/java/cz/xelfi/quoridor/desktop/sample/KukTopComponent.java --- a/desktop/desktop-sample/src/main/java/cz/xelfi/quoridor/desktop/sample/KukTopComponent.java Tue Sep 14 09:58:04 2010 +0200 +++ b/desktop/desktop-sample/src/main/java/cz/xelfi/quoridor/desktop/sample/KukTopComponent.java Fri Sep 17 05:52:39 2010 -0700 @@ -19,6 +19,7 @@ package cz.xelfi.quoridor.desktop.sample; import cz.xelfi.quoridor.webidor.Game; +import cz.xelfi.quoridor.webidor.GameStatus; import org.openide.util.NbBundle; import org.openide.windows.TopComponent; //import org.openide.util.ImageUtilities; @@ -36,6 +37,7 @@ private static final String PREFERRED_ID = "KukTopComponent"; private String id; + private String player; public KukTopComponent() { initComponents(); @@ -45,8 +47,15 @@ this.id = id; final Game g = Quoridor.getDefault().getGame(id); boardPane1.setBoard(g.getBoard()); - setName( - NbBundle.getMessage(KukTopComponent.class, "CTL_KukTopComponent", + player = currentPlayer(g); + final boolean edit = Quoridor.getDefault().user().equals(player); + boardPane1.setEditable(edit); + setName(id); + setHtmlDisplayName( + edit ? NbBundle.getMessage(KukTopComponent.class, "CTL_GamePlay", + g.getId().getWhite(), g.getId().getBlack() + ) : + NbBundle.getMessage(KukTopComponent.class, "CTL_Game", g.getId().getWhite(), g.getId().getBlack() ) ); @@ -56,6 +65,16 @@ ) ); } + + private static String currentPlayer(Game g) { + if (g.getId().getStatus() == GameStatus.whiteMove) { + return g.getId().getWhite(); + } + if (g.getId().getStatus() == GameStatus.blackMove) { + return g.getId().getBlack(); + } + return null; + } /** This method is called from within the constructor to * initialize the form. @@ -72,6 +91,12 @@ org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(KukTopComponent.class, "KukTopComponent.jLabel1.text")); // NOI18N + boardPane1.addBoardListener(new cz.xelfi.quoridor.visidor.BoardListener() { + public void boardChanged(cz.xelfi.quoridor.visidor.BoardEvent evt) { + boardPane1BoardChanged(evt); + } + }); + jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/xelfi/quoridor/desktop/sample/black.png"))); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jButton1, org.openide.util.NbBundle.getMessage(KukTopComponent.class, "KukTopComponent.jButton1.text")); // NOI18N jButton1.addActionListener(new java.awt.event.ActionListener() { @@ -119,6 +144,15 @@ setGameId(id); }//GEN-LAST:event_jButton1ActionPerformed + private void boardPane1BoardChanged(cz.xelfi.quoridor.visidor.BoardEvent evt) {//GEN-FIRST:event_boardPane1BoardChanged + if (player != null) { + Quoridor.getDefault().move(id, player, evt.getMove()); + setGameId(id); + } else { + boardPane1.setEditable(false); + } + }//GEN-LAST:event_boardPane1BoardChanged + // Variables declaration - do not modify//GEN-BEGIN:variables private cz.xelfi.quoridor.visidor.BoardPane boardPane1; private javax.swing.JButton jButton1; diff -r 13fe01081e23 -r 430ab68846fa desktop/desktop-sample/src/main/java/cz/xelfi/quoridor/desktop/sample/Quoridor.java --- a/desktop/desktop-sample/src/main/java/cz/xelfi/quoridor/desktop/sample/Quoridor.java Tue Sep 14 09:58:04 2010 +0200 +++ b/desktop/desktop-sample/src/main/java/cz/xelfi/quoridor/desktop/sample/Quoridor.java Fri Sep 17 05:52:39 2010 -0700 @@ -22,6 +22,7 @@ import com.sun.jersey.api.client.GenericType; import com.sun.jersey.api.client.UniformInterfaceException; import com.sun.jersey.api.client.WebResource; +import cz.xelfi.quoridor.Move; import cz.xelfi.quoridor.webidor.Game; import cz.xelfi.quoridor.webidor.GameId; import java.util.List; @@ -50,12 +51,16 @@ public abstract List listGames(); public abstract Game getGame(String id); + public abstract String user(); public abstract boolean login(String login, String password); + public abstract void move(String id, String player, Move move); + private static class Impl extends Quoridor { private final WebResource wr; private String id = ""; + private String login = ""; private static final Logger LOG = Logger.getLogger(Impl.class.getName()); public Impl() { @@ -84,6 +89,9 @@ try { id = wr.path("login").queryParam("name", login). queryParam("password", password).put(String.class); + if (id != null) { + this.login = login; + } return id != null; } catch (UniformInterfaceException ex) { LOG.log(Level.INFO, "Cannot login", ex); @@ -91,5 +99,19 @@ } } + @Override + public String user() { + return login; + } + + @Override + public void move(String game, String player, Move move) { + String s = wr.path("games").path(game).queryParam("loginID", id). + queryParam("player", player). + queryParam("move", move.toString()). + accept(MediaType.TEXT_XML).put(String.class); + System.err.println("s: " + s); + } + } } diff -r 13fe01081e23 -r 430ab68846fa desktop/desktop-sample/src/main/resources/cz/xelfi/quoridor/desktop/sample/Bundle.properties --- a/desktop/desktop-sample/src/main/resources/cz/xelfi/quoridor/desktop/sample/Bundle.properties Tue Sep 14 09:58:04 2010 +0200 +++ b/desktop/desktop-sample/src/main/resources/cz/xelfi/quoridor/desktop/sample/Bundle.properties Fri Sep 17 05:52:39 2010 -0700 @@ -18,7 +18,8 @@ CTL_Hello=Hello CTL_KukAction=Kuk -CTL_KukTopComponent={0}/{1} +CTL_Game={0}/{1} +CTL_GamePlay={0}/{1} CTL_LoginAction=Login CTL_OpenGameAction=Open a game CTL_ShowGames=Show Games