📄 localdemo.java
字号:
move = (Movement) move.getParent();
if (move.getChildCount() > 1) {
break;
}
}
if (move == root) {
return;
}
while(current != move) {
undo();
}
} else if (bt == btNextSib) {
TreeNode node = current.getNextSibling();
if (node == null) {
return;
}
undo();
showMovement((Movement)node);
} else if (bt == btPreSib) {
TreeNode node = current.getPreviousSibling();
if (node == null) {
return;
}
undo();
showMovement((Movement)node);
} else if (bt == btDelStone) {
if (!current.isLeaf()) {
return;
}
Movement move = current;
undo();
// ((DefaultTreeModel)recordtree.getModel()).removeNodeFromParent(move);
move.removeFromParent();
} else if (bt == btResetComment) {
txtComment.setText(current.getComment());
} else if (bt == btEditComment) {
txtComment.setEditable(true);
txtComment.setEnabled(true);
} else if (bt == btSaveComment) {
current.setComment(txtComment.getText());
txtComment.setEditable(false);
txtComment.setEnabled(false);
/* } else if (bt == btCross) {
} else if (bt == btChar) {
*/ }
}
public void cubicClicked(Grid grid, GridEvent evt) {
if(btAddStone.getModel().isSelected()){
int player = GoPlayer.getOpponent(current.player);
try{
boardModel.performPut(evt.col, evt.row, player);
hideTips();
if (play_music) {
sp.play();
}
Movement mv = new Movement(evt.col, evt.row, player);
current.add(mv);
current = mv;
updateState();
}
catch(GoException ge){
}
}
else if(btTriangle.getModel().isSelected()){
GoPoint p = boardModel.getPoint(evt.col, evt.row);
if (p.getState() != GoPoint.EMPTY) {
boardModel.setTip(evt.col, evt.row, GoPoint.TRIANGLE);
current.addTip(evt.col, evt.row, GoPoint.TRIANGLE);
}
}
else if(btSquare.getModel().isSelected()){
GoPoint p = boardModel.getPoint(evt.col, evt.row);
if (p.getState() != GoPoint.EMPTY) {
boardModel.setTip(evt.col, evt.row, GoPoint.SQUARE);
current.addTip(evt.col, evt.row, GoPoint.SQUARE);
}
}
else if(btCircle.getModel().isSelected()){
GoPoint p = boardModel.getPoint(evt.col, evt.row);
if (p.getState() != GoPoint.EMPTY) {
boardModel.setTip(evt.col, evt.row, GoPoint.CIRCLE);
current.addTip(evt.col, evt.row, GoPoint.CIRCLE);
}
}
else if(btCross.getModel().isSelected()){
GoPoint p = boardModel.getPoint(evt.col, evt.row);
if (p.getState() != GoPoint.EMPTY) {
boardModel.setTip(evt.col, evt.row, GoPoint.CROSS);
current.addTip(evt.col, evt.row, GoPoint.CROSS);
}
}
else if(btChar.getModel().isSelected()){
GoPoint p = boardModel.getPoint(evt.col, evt.row);
if (p.getState() == GoPoint.EMPTY) {
boardModel.setTip(evt.col, evt.row, (int)(98 + cboChar.getSelectedIndex()));
current.addTip(evt.col, evt.row, (int)(98 + cboChar.getSelectedIndex()));
}
}
// JToggleButton btAddStone, btTriangle, btSquare, btCircle, btCross, btChar;
}
/**
* put stone, show number, tips and comment of current movement
*/
private void showMovement(Movement move) {
System.out.println("move at (" + move.col + "," + move.row + ")");
System.out.println("tip count is " + move.getTipCount());
System.out.println("comment is " + move.getComment());
try{
hideTips();
current = move;
showTips();
boardModel.performPut(move.col, move.row, move.player);
if (play_music) {
sp.play();
}
updateState();
}
catch(GoException ge){
// ge.printStackTrace();
}
}
/**
* undo one movement
*/
private void undo() {
TreeNode node = current.getParent();
if (node == null) {
return;
}
try {
hideTips();
boardModel.undo();
current = (Movement) node;
showTips();
//show comment
updateState();
}
catch(Exception ge){
}
}
private void hideTips(){
if (current == null) return;
for (int i = 0; i < current.getTipCount(); i++) {
Movement.HandTip t = current.tipAt(i);
boardModel.setTip(t.col, t.row, GoPoint.NONE);
}
}
private void showTips(){
for (int i = 0; i < current.getForceCount(); i++) {
Movement.HandTip t = current.forceAt(i);
boardModel.forcePut(t.col, t.row, t.tip);
}
txtComment.setText(current.getComment());
for (int i = 0; i < current.getTipCount(); i++) {
Movement.HandTip t = current.tipAt(i);
boardModel.setTip(t.col, t.row, t.tip);
}
}
protected URL getResource(String name) {
if (name != null) {
URL url = this.getClass().getResource(name);
return url;
}
return null;
}
public void initDemo(Match m) {
match = m;
boardModel.reset();
if (match == null) {
btFirst.setEnabled(false);
btPrevious.setEnabled(false);
btNext.setEnabled(false);
btLast.setEnabled(false);
btPreComment.setEnabled(false);
btNextComment.setEnabled(false);
root = null;
current = null;
return;
}
root = match.getRootMovement();
showMovement(root);
updateState();
}
private void updateState() {
/* ImageIcon icoSound, icoNoSound, icoShowNum, icoNotShow;
JButton btNew, btOpen, btClose,btSave,Undo,btSound,btShowNum, btHelp;
JButton btFirst, btPrevious, btNext, btLast, btPreComment, btNextComment;
JButton btResetComment, btEditComment, btSaveComment;
JButton btCloseVar, btNextSib, btPreSib;
JButton btDelStone;
JToggleButton btAddStone, btTriangle, btSquare, btCircle, btCross, btChar;
JComboBox cboChar;
JTextArea txtComment;
*/
if (current.getChildCount() > 0) {
btNext.setEnabled(true);
btLast.setEnabled(true);
}
if (current.getParent() != root) {
btFirst.setEnabled(true);
btPrevious.setEnabled(true);
}
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
//UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
String vers = System.getProperty("java.version");
if (vers.compareTo("1.1.2") < 0) {
System.out.println("!!!WARNING: Swing must be run with a " +
"1.1.2 or higher version VM!!!");
}
LocalDemo ht = new LocalDemo();
} catch (Throwable t) {
System.out.println("uncaught exception: " + t);
t.printStackTrace();
}
}
class RecordTreeCellRenderer implements TreeCellRenderer {
ImageIcon icoRoot;
ImageIcon icoGeneral;
ImageIcon icoParent;
ImageIcon icoCurrent;
public RecordTreeCellRenderer() {
icoRoot = new ImageIcon(getResource("/resources/node_parent.gif"));
icoGeneral = new ImageIcon(getResource("/resources/node_general.gif"));
icoCurrent = new ImageIcon(getResource("/resources/node_cur.gif"));
}
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
Movement move = (Movement) value;
if (move == root) {
return new JLabel(icoRoot);
}
else if (move == current) {
return new JLabel(icoCurrent);
}
else {
return new JLabel(icoGeneral);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -