package oripa.viewsetting.main;
import java.awt.event.KeyEvent;
import oripa.paint.GraphicMouseActionInterface;
import oripa.paint.copypaste.CopyAndPasteAction;
import oripa.paint.core.PaintConfig;
import oripa.viewsetting.ViewScreenUpdater;
import oripa.viewsetting.ViewSettingDataBase;
public class ScreenUpdater extends ViewSettingDataBase implements ViewScreenUpdater {
//-------------------------
// singleton
//-------------------------
private static ScreenUpdater instance = null;
private ScreenUpdater() {
}
public static ScreenUpdater getInstance(){
if(instance == null){
instance = new ScreenUpdater();
}
return instance;
}
//-------------------------
/* (非 Javadoc)
* @see oripa.viewsetting.main.ViewScreenUpdater#updateScreen()
*/
@Override
public void updateScreen(){
setChanged();
notifyObservers(REDRAW_REQUESTED);
}
public class KeyListener implements java.awt.event.KeyListener{
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.isControlDown()){
updateIfCopyAndPaste(true);
}
else if(e.getKeyCode() == KeyEvent.VK_ESCAPE){
updateScreen();
}
}
@Override
public void keyReleased(KeyEvent e) {
updateIfCopyAndPaste(false);
}
}
private void updateIfCopyAndPaste(boolean changeOrigin){
GraphicMouseActionInterface action = PaintConfig.getMouseAction();
if(action instanceof CopyAndPasteAction){
CopyAndPasteAction casted = (CopyAndPasteAction) action;
casted.changeAction(changeOrigin);
updateScreen();
}
}
/* (非 Javadoc)
* @see oripa.viewsetting.main.ViewScreenUpdater#getKeyListener()
*/
@Override
public java.awt.event.KeyListener getKeyListener() {
return new KeyListener();
}
}