📄 swingguipanel.java
字号:
}
else if (a.getActionCommand().equals("continents")) {
StringBuffer buffer = new StringBuffer();
buffer.append("<html><table>");
Continent[] continents = myrisk.getGame().getContinents();
for (int c=0;c<continents.length;c++) {
Continent continent = continents[c];
buffer.append("<tr style=\"background-color: ");
buffer.append(RiskUtil.getHexForColor(continent.getColor()));
buffer.append("; color:");
buffer.append(RiskUtil.getHexForColor(RiskUtil.getTextColorFor(continent.getColor())));
buffer.append("\"><td>");
buffer.append(continent.getName());
buffer.append("</td><td> - </td><td>");
buffer.append(continent.getArmyValue());
buffer.append("</td></tr>");
}
buffer.append("</table></html>");
JOptionPane.showMessageDialog(this, buffer.toString(), resbundle.getString("swing.button.continents"), JOptionPane.PLAIN_MESSAGE );
}
else if (a.getActionCommand().equals("roll 1")) {
go("roll 1");
}
else if (a.getActionCommand().equals("roll 2")) {
go("roll 2");
}
else if (a.getActionCommand().equals("roll 3")) {
go("roll 3");
}
else if (a.getActionCommand().equals("join game")) {
String result = JOptionPane.showInputDialog(RiskUtil.findParentFrame(this), "type the server name", myrisk.getRiskConfig("default.host") );
if (result!=null) { go("join "+result); }
}
else if (a.getActionCommand().equals("new game")) {
SwingGUIPanel.this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
go("newgame");
}
else if (a.getActionCommand().equals("load game")) {
String name = RiskUtil.getLoadFileName(
RiskUtil.findParentFrame(this),
RiskUtil.SAVES_DIR,
RiskFileFilter.RISK_SAVE_FILES
);
if (name!=null) {
go("loadgame " + name );
}
}
else if (a.getActionCommand().equals("save game")) {
String name = RiskUtil.getSaveFileName(
RiskUtil.findParentFrame(this),
RiskUtil.SAVES_DIR,
RiskFileFilter.RISK_SAVE_FILES
);
if (name!=null) {
go("savegame " + name );
}
}
else if (a.getActionCommand().equals("close game")) {
//if (localGame) {
go("closegame");
//}
//else {
// go("leave");
//}
}
else if (a.getActionCommand().equals("options")) {
Object[] message = new Object[2];
message[0] = new JCheckBox("Auto End Go");
message[1] = new JCheckBox("Auto Defend");
((JCheckBox)message[0]).setSelected( myrisk.getAutoEndGo() );
((JCheckBox)message[1]).setSelected( myrisk.getAutoDefend() );
String[] options = {
"OK",
"cancel"
};
int result = JOptionPane.showOptionDialog(
this, // the parent that the dialog blocks
message, // the dialog message array
"Options", // the title of the dialog window
JOptionPane.OK_CANCEL_OPTION, // option type
JOptionPane.PLAIN_MESSAGE, // message type
null, // optional icon, use null to use the default icon
options, // options string array, will be made into buttons
options[0] // option that should be made into a default button
);
if (result == JOptionPane.OK_OPTION ) {
myrisk.parser( "autoendgo " + ((((JCheckBox)message[0]).isSelected()) ? "on" : "off") );
myrisk.parser( "autodefend " + ((((JCheckBox)message[1]).isSelected()) ? "on" : "off") );
}
/*
Frame frame = Risk.findParentFrame(this);
OptionsDialog optionsDialog = new OptionsDialog( frame , true, myrisk);
Dimension frameSize = frame.getSize();
Dimension optionsSize = optionsDialog.getPreferredSize();
int x = frame.getLocation().x + (frameSize.width - optionsSize.width) / 2;
int y = frame.getLocation().y + (frameSize.height - optionsSize.height) / 2;
if (x < 0) x = 0;
if (y < 0) y = 0;
optionsDialog.setLocation(x, y);
optionsDialog.setVisible(true);
*/
}
else if (a.getActionCommand().equals("replay")) {
go("replay");
}
else if (a.getActionCommand().equals("start server")) {
if (serverOn) {
go("killserver");
}
else {
go("startserver");
}
}
else if (a.getActionCommand().equals("lobby")) {
RiskUtil.runLobby(myrisk);
}
else {
SwingGUIPanel.this.actionPerformed(a);
}
}
public void blockInput() {
gSaveGame.setEnabled(false);
gmSaveGame.setEnabled(false);
showMission.setEnabled(false);
showCards.setEnabled(false);
Undo.setEnabled(false);
gOptions.setEnabled(false);
gmOptions.setEnabled(false);
gmReplay.setEnabled(false);
// this is so close is not selected
mapViewComboBox.grabFocus();
}
public void getInput() {
if (localGame) {
gSaveGame.setEnabled(true);
gmSaveGame.setEnabled(true);
Undo.setEnabled(true);
gmReplay.setEnabled(true);
}
showMission.setEnabled(true);
showCards.setEnabled(true);
gOptions.setEnabled(true);
gmOptions.setEnabled(true);
}
public void newGame() {
gNewGame.setEnabled(false);
gLoadGame.setEnabled(false);
//gSaveGame.setEnabled(true);
gCloseGame.setEnabled(true);
gmNewGame.setEnabled(false);
gmLoadGame.setEnabled(false);
gmStartServer.setEnabled(false);
gmJoinGame.setEnabled(false);
gStartServer.setEnabled(false);
gJoinGame.setEnabled(false);
//gmSaveGame.setEnabled(true);
gmCloseGame.setEnabled(true);
remove(Pix);
remove(guiGame);
guiSetup.setupGame();
add(guiSetup, java.awt.BorderLayout.CENTER );
SwingGUIPanel.this.setCursor(null); // Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)
}
public void closeGame() {
gNewGame.setEnabled(true);
gLoadGame.setEnabled(true);
gSaveGame.setEnabled(false);
gCloseGame.setEnabled(false);
gmNewGame.setEnabled(true);
gmLoadGame.setEnabled(true);
gmStartServer.setEnabled(true);
gmJoinGame.setEnabled(true);
gStartServer.setEnabled(true);
gJoinGame.setEnabled(true);
gmSaveGame.setEnabled(false);
gmCloseGame.setEnabled(false);
gOptions.setEnabled(false);
gmOptions.setEnabled(false);
gmReplay.setEnabled(false);
remove(guiGame);
remove(guiSetup);
add(Pix, java.awt.BorderLayout.CENTER );
}
public void startGame() {
gNewGame.setEnabled(false);
gLoadGame.setEnabled(false);
//gSaveGame.setEnabled(true);
gCloseGame.setEnabled(true);
gmNewGame.setEnabled(false);
gmLoadGame.setEnabled(false);
gmStartServer.setEnabled(false);
gmJoinGame.setEnabled(false);
gStartServer.setEnabled(false);
gJoinGame.setEnabled(false);
//gmSaveGame.setEnabled(true);
gmCloseGame.setEnabled(true);
remove(Pix);
remove(guiSetup);
add(guiGame, java.awt.BorderLayout.CENTER );
// this is so close is not selected
mapViewComboBox.grabFocus();
}
public void serverState(boolean s) {
serverOn=s;
if (serverOn) {
gmStartServer.setText(resbundle.getString("swing.menu.stopserver"));
gStartServer.setText(resbundle.getString("swing.menu.stopserver"));
}
else {
gmStartServer.setText(resbundle.getString("swing.menu.startserver"));
gStartServer.setText(resbundle.getString("swing.menu.startserver"));
}
}
public void setGameStatus(String state) {
gameStatus.setText(" "+state);
}
}
class DebugTab extends JSplitPane implements SwingGUITab,ActionListener {
private JTextArea debugText;
private JTextArea errText;
private JToolBar toolbarDebug;
private JMenu mDebug;
public JToolBar getToolBar() {
return toolbarDebug;
}
public JMenu getMenu() {
return mDebug;
}
public void sendDebug(String a) {
debugText.append(a + System.getProperty("line.separator") );
debugText.setCaretPosition(debugText.getDocument().getLength());
}
public DebugTab() {
super(JSplitPane.HORIZONTAL_SPLIT);
setName("Debug");
//##################### Debug ####################
toolbarDebug = new JToolBar();
toolbarDebug.setRollover(true);
JButton tdSaveDebug = new JButton("Save Debug Log");
JButton tdPlayDebug = new JButton("Play Debug Log");
JButton tdClearDebug = new JButton("Clear Debug Log");
JButton tdSaveError = new JButton("Save Error Log");
JButton sendError = new JButton("Send Error Log");
tdSaveDebug.setActionCommand("save debug");
tdPlayDebug.setActionCommand("play debug");
tdClearDebug.setActionCommand("clear debug");
tdSaveError.setActionCommand("save error");
sendError.setActionCommand("send error");
tdSaveDebug.addActionListener(this);
tdPlayDebug.addActionListener(this);
tdClearDebug.addActionListener(this);
tdSaveError.addActionListener(this);
sendError.addActionListener(this);
toolbarDebug.add(tdSaveDebug);
toolbarDebug.add(tdPlayDebug);
toolbarDebug.add(tdClearDebug);
toolbarDebug.addSeparator();
toolbarDebug.add(tdSaveError);
toolbarDebug.add(sendError);
toolbarDebug.setFloatable(false);
mDebug = new JMenu("Debug");
mDebug.setMnemonic('D');
JMenuItem dSave = new JMenuItem("Save Debug Log");
dSave.setMnemonic('S');
dSave.setActionCommand("save debug");
dSave.addActionListener( this );
mDebug.add(dSave);
JMenuItem dPlay = new JMenuItem("Play Debug Log");
dPlay.setMnemonic('P');
dPlay.setActionCommand("play debug");
dPlay.addActionListener( this );
mDebug.add(dPlay);
JMenuItem dClear = new JMenuItem("Clear Debug Log");
dClear.setMnemonic('C');
dClear.setActionCommand("clear debug");
dClear.addActionListener( this );
mDebug.add(dClear);
mDebug.addSeparator();
JMenuItem dSaveErr = new JMenuItem("Save Error Log");
dSaveErr.setMnemonic('E');
dSaveErr.setActionCommand("save error");
dSaveErr.addActionListener( this );
mDebug.add(dSaveErr);
JMenuItem send = new JMenuItem("Send Error Log");
send.setMnemonic('S');
send.setActionCommand("send error");
send.addActionListener( this );
mDebug.add(send);
//mDebug.addSeparator();
//JMenuItem aiwait = new JMenuItem("Change AI wait");
//aiwait.setMnemonic('A');
//aiwait.setActionCommand("aiwait");
//aiwait.addActionListener( this );
//mDebug.add(aiwait);
debugText = new JTextArea();
debugText.setEditable(false);
JScrollPane debugScroll = new JScrollPane(debugText);
debugScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
//debugScroll.setBorder( new javax.swing.border.TitledBorder( goodBorder, "Debug Log", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.ABOVE_TOP ) );
JPanel debugPanel = new JPanel( new BorderLayout() );
debugPanel.add( new JLabel(" Debug Log"), BorderLayout.NORTH );
debugPanel.add(debugScroll);
int size = 16;
Image img = new BufferedImage(size,size,BufferedImage.TYPE_INT_ARGB);
Graphics g = img.getGraphics();
g.setColor(Color.RED );
g.fillOval(0,0,size,size);
g.dispose();
final Icon icon = new ImageIcon(img);
// ####### err
errText = new JTextArea();
errText.setEditable(false);
PrintStream ps = SimplePrintStream.getSimplePrintStream(
new StringWriter() {
public void write(String x) {
int nom = tabbedpane.indexOfComponent(DebugTab.this);
if (tabbedpane.getIconAt(nom)==null) {
tabbedpane.setIconAt(nom,icon);
String n = System.getProperty("line.separator");
errText.append(n+n+"Date: "+new java.util.Date().toString()+n+n+n);
}
errText.append(x);
}
}
);
if (RiskUtil.checkForNoSandbox()) {
// catch everything in my PrintStream
//System.setOut(ps);
// only care about errors
System.setErr(ps);
}
JScrollPane errScroll = new JScrollPane( errText );
//errScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
//errScroll.setBorder( BorderFactory.createTitledBorder( BorderFactory.createLoweredBevelBorder() , "Error Log", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.ABOVE_TOP ) );
JPanel errPanel = new JPanel( new BorderLayout() );
errPanel.add( new JLabel(" Error Log"), BorderLayout.NORTH );
errPanel.add(errScroll);
// ######## split
debugPanel.setOpaque(false);
errPanel.setOpaque(false);
setLeftComponent(debugPanel);
setRightComponent(errPanel);
setContinuousLayout(true);
setOneTouchExpandable(true);
setDividerLocation(400);
setBorder( BorderFactory.createEmptyBorder() );
setOpaque(false);
}
public void actionPerformed(ActionEvent a) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -