package solitaer; import java.awt.Component; import java.awt.event.MouseEvent; import javax.swing.SwingUtilities; import javax.swing.event.MouseInputListener; public class MyMouseListener implements MouseInputListener { private SaveStack saveStack; private BaseStack tempStack; private BaseStack selectedStack; private Card tempCard; public MyMouseListener(SaveStack _save) { // TODO Auto-generated constructor stub this.saveStack = _save; } @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub System.out.println("DOWN"); Component com = SwingUtilities.getDeepestComponentAt(e.getComponent(), e.getX(), e.getY()); if ((com instanceof Card && com.getParent() instanceof StartStack) || (com instanceof StartStack && ((StartStack) com).stackIsEmpty())) { if (saveStack.stackIsEmpty()) { if (com instanceof Card && com.getParent() instanceof StartStack) { tempCard = (Card) com; tempStack = (StartStack) com.getParent(); // Wenn faceDown, schau ob es die oberste Carde ist und dreh diese um if (!tempCard.isFaceUp()) { if (tempStack.peekLastCard().equals(tempCard)) { tempCard.setFaceUp(true); tempCard.repaint(); } } // Card faceUp else { // move all Cards below the selected Card to Save int index = tempStack.indexOfCard(tempCard); while (tempStack.stackSize() - 1 >= index) { saveStack.addCard(tempStack.removeLastCard()); } selectedStack = tempStack; } } } // saveStack is NOT empty else { if(com instanceof StartStack) { tempStack = (StartStack) com; } else { tempStack = (StartStack) com.getParent(); } if (selectedStack == null) { System.out.println("ERROR selectedStack in StartStack"); } if (tempStack.cardCheck(tempStack.peekLastCard(), saveStack.peekLastCard())) { clearSaveStack(tempStack); } else { clearSaveStack(selectedStack); } selectedStack = null; } } // AblageStack else if (com.getParent() instanceof AblageStack || com instanceof AblageStack) { System.out.println("AblageStack"); if (com instanceof AblageStack) { tempStack = (AblageStack) com; } else { tempStack = (AblageStack) com.getParent(); } if (saveStack.stackIsEmpty()) { // Move Top Card from AblageStack in Save if (tempStack.stackIsEmpty() == false) { saveStack.addCard(tempStack.removeLastCard()); selectedStack = tempStack; } } else { // Move Card from Save in AblageStack if (saveStack.stackSize() == 1) { if (tempStack.cardCheck(tempStack.peekLastCard(), saveStack.peekLastCard())) { tempStack.addCard(saveStack.removeLastCard()); } } else { // Clear Save clearSaveStack(selectedStack); } } } // GeberStack else if (com.getParent() instanceof GeberStack || com instanceof GeberStack) { System.out.println("GeberStack"); if (com instanceof GeberStack) { tempStack = (GeberStack) com; } else { tempStack = (GeberStack) com.getParent(); } if(this.saveStack.stackIsEmpty() == false) { clearSaveStack(selectedStack); } if (tempStack.stackIsEmpty()) { // Move all from Waste to Geber ((GeberStack) this.tempStack).swapWasteGeber(); } else { // Move next card to Waste ((GeberStack) this.tempStack).moveToWaste(); } } // WasteStack else if (com.getParent() instanceof WasteStack || com instanceof WasteStack) { System.out.println("WasteStack"); if (com instanceof WasteStack) { tempStack = (WasteStack) com; } else { tempStack = (WasteStack) com.getParent(); } if (saveStack.stackIsEmpty()) { // Move Top Card from AblageStack in Save if (tempStack.stackIsEmpty() == false) { saveStack.addCard(tempStack.removeLastCard()); selectedStack = tempStack; } } else { clearSaveStack(selectedStack); } //Clear SaveStack click on SolitaerGamePanel }else if(com instanceof SolitaerGamePanel || com.getParent() instanceof SolitaerGamePanel && com instanceof StartStack ){ if(saveStack.stackIsEmpty() == false) { clearSaveStack(selectedStack); } } } private void clearSaveStack(BaseStack _ziel) { // Alles wieder auf den Ursprünglichen Stack packen while (!saveStack.stackIsEmpty()) { _ziel.addCard(saveStack.removeLastCard()); } } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseDragged(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseMoved(MouseEvent e) { // TODO Auto-generated method stub } }