/** * run will be exicuted when the thread is called, and will connect to the server and start * communicating with it. */ public void run() { WaitForConnection wfc = new WaitForConnection("Waiting For Connection"); m_OldWindow.setEnabled(false); try { m_Socket = new Socket(m_IP, m_Port); // System.out.println("Connecting to ChatService..."); m_ChatSocket = new Socket(m_IP, m_Port); // System.out.println("\nConnected to ChatService..."); wfc.updateMessage("Waiting For Other Players"); // System.out.println("Getting OutputStream Stream From server..."); toServer = new ObjectOutputStream(m_Socket.getOutputStream()); toChatServer = new ObjectOutputStream(m_ChatSocket.getOutputStream()); toChatServer.flush(); // System.out.println("Getting Input Stream From server..."); fromServer = new ObjectInputStream(m_Socket.getInputStream()); fromChatServer = new ObjectInputStream(m_ChatSocket.getInputStream()); m_ChatService = new ChatService(); m_ChatServiceThread = new Thread(m_ChatService); m_ChatServiceThread.start(); m_MultiPlayerMenu.startGame(); wfc.dispose(); m_OldWindow.dispose(); } catch (java.net.ConnectException e) { wfc.dispose(); MenuWindow menu = new MenuWindow(new JFrame("")); JOptionPane.showMessageDialog(menu.getMainFrame(), "Error Connection refused"); m_OldWindow.setEnabled(true); } catch (IOException ex) { System.err.print(ex); } }
public void finishedSelectingUnits(TilePanel tilePanel, List<Unit> chosenUnits) { UnitActionDetector unitActionDetector = new UnitActionDetector(selectedPanel, selectedUnit, tilePanel, chosenUnits); if (unitActionDetector.isSelectingUnit()) { selectedPanel = tilePanel; selectedPanel.addTileStateFromKey(selectedStateKey); repaintPanels(selectedPanel); selectedUnit = getUnit(chosenUnits); selectValidMovements(selectedPanel.getTile(), selectedUnit); } else if (unitActionDetector.isDeselectingUnit()) { selectedPanel.removeTileStateFromKey(selectedStateKey); deselectValidMovements(selectedPanel.getTile(), selectedUnit); repaintPanels(selectedPanel); selectedPanel = null; selectedUnit = null; } else if (unitActionDetector.isMovingUnit()) { Position from = selectedPanel.getTile().getPosition(); Position to = tilePanel.getTile().getPosition(); if (movementStrategy.isValidMove(selectedUnit, from, to, unitMap)) { deselectValidMovements(selectedPanel.getTile(), selectedUnit); selectedPanel.removeTileStateFromKey(selectedStateKey); List<Unit> units = unitMap.get(to); if (units != null && !units.isEmpty()) { Unit defending = units.get(0); BattleStrategy strategy = battleStrategyConfiguration.getBattleStrategy( selectedUnit, defending, selectedPanel.getTile(), tilePanel.getTile()); Unit winner = strategy.getWinner(selectedUnit, defending); if (winner.equals(selectedUnit)) { units.remove(defending); } } board.move(selectedUnit, from, to); repaintPanels(selectedPanel); selectedPanel = null; selectedUnit = null; } } frame.setEnabled(true); resetPositions(); }
// Обработка событий @Override public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); switch (command) { case "Добавить материал": // Открываем новое окно int row = prepModel.material.size(); // Номер добавляемой в будущем строки frame.setEnabled(false); // Делаем окно неактивным AddMaterial addMt = new AddMaterial(); addMt.setVisible(true); System.out.println("Добавлена\n"); break; case "Удалить материалы": Iterator<Material> iter = prepModel.material.iterator(); // Итератор ArrayList<Material> selectItems = new ArrayList<Material>(); // Список выделенных элементов // Есть ли элементы в таблице? if (iter.hasNext()) { // Кидаем в список выделенные элементы while (iter.hasNext()) { Material next = iter.next(); if (next.checkBox == Boolean.TRUE) { selectItems.add(next); } } // Есть ли выделенные элементы? if (!selectItems.isEmpty()) { // подтверждение удаления int res = JOptionPane.showConfirmDialog( null, "Вы действительно хотите удалить выделенные элементы?", "Question", JOptionPane.YES_NO_OPTION); if (res == JOptionPane.YES_OPTION) { // Удаление из таблицы for (int i = 0; i < selectItems.size(); i++) { prepModel.material.remove(selectItems.get(i)); } prepModel.updateData(); // Обновление данных System.out.println("Удалены"); JOptionPane.showMessageDialog( null, "Удаление выполнено успешно! Сохраните результат!"); } } else { JOptionPane.showMessageDialog(null, "Нет выделенных элементов для удаления."); } } else { System.out.println("Нет элементов для удаления\n"); } break; case "Сохранить изменения": // Проверка, добавдлены ли материалы? (Для установки даты) Date dMat = null; if (!proj.listMaterial.equals(prepModel.material)) { dMat = new Date(); } // Обновление записей в модели таблицы родительского окна MainWindow.myModel.pr.set( this.row, new Project( tfName.getText(), tfPath.getText(), tfDebit.getText(), proj.date, dMat, prepModel.material)); // MessageBox JOptionPane.showMessageDialog( null, "Сохраненение выполнено успешно!", "Сохранено", JOptionPane.INFORMATION_MESSAGE); MainWindow.myModel.updateData(); // обновляем таблицу родительского окна // Закрываем окно после сохранения frame.setVisible(false); MainWindow.frame.setEnabled(true); MainWindow.frame.toFront(); break; default: System.err.println("Неизвестная команда"); } }