📄 cardwaste.java
字号:
package de.tsr.jsol.logic;
import java.util.*;
import java.util.NoSuchElementException;
import javax.microedition.lcdui.*;
import de.tsr.jsol.gui.IGraphicsWrapper;
import de.tsr.jsol.util.CStack;
public class CardWaste extends CardContainer implements ICardSelection {
private CStack _waste = new CStack();
private Card _selection;
private UndoCommand _undoCommand;
public CardWaste( int x, int y ) {
super( x, y );
}
public void push( Card card ) {
_waste.push( card );
}
public void Draw( IGraphicsWrapper g ) {
if( !_waste.empty() && _selection == null ) {
((Card)_waste.peek()).Paint(g);
}
else if( _selection != null ) {
g.setStrokeStyle( Graphics.DOTTED );
_selection.Paint( g );
g.setStrokeStyle( Graphics.SOLID);
}
else {
DrawEmptyContainer(g);
}
}
public ICardSelection VisitCardGroup(ICardSelection selection) {
if( selection.SelectionSize() == 1 && _selection == selection.SelectedCardAt(0)) {
_waste.push( _selection );
_selection = null;
return null;
}
return selection;
}
public ICardSelection VisitClicked() {
if( !_waste.empty() && _selection == null ) {
_selection = _waste.pop();
_undoCommand = new UndoCommand();
_undoCommand.AddCard( _selection );
return this;
}
else
return null;
}
public Card SelectedCardAt(int position) {
if( position != 0 ) {
throw new NoSuchElementException("Index out of range. Waste has only one"
+ " selected Card.");
}
return _selection;
}
public int SelectionSize() {
if( _selection == null )
return 0;
else
return 1;
}
public void RemoveSelection() {
_selection = null;
UndoChain.AddCommand(_undoCommand);
}
public Enumeration SelectedElements() {
Vector v = new Vector();
v.addElement(_selection);
return v.elements();
}
public ICardSelection Clicked(ICardSelection selection) {
if( selection == null)
return VisitClicked();
else
return VisitCardGroup(selection);
}
public void SingleClicked() {
if( _waste.empty()) return;
_selection = _waste.pop();
Enumeration e = _singleClickDestinations.elements();
while( e.hasMoreElements()) {
IConnectable container = (CardContainer)e.nextElement();
if ( null == container.Clicked(this) ) {
RemoveSelection();
return;
}
}
_waste.push(_selection);
RemoveSelection();
}
public UndoCommand GetUndoCommand() {
return _undoCommand;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -