/*******************************************************************************
* Copyright (c) 2009-2013 CWI
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.rascalmpl.eclipse.library.vis.swt.applet;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
import org.rascalmpl.eclipse.library.vis.properties.IRunTimePropertyChanges;
import org.rascalmpl.eclipse.library.vis.properties.Properties;
public class RunTimePropertyAdjuster implements IRunTimePropertyChanges, IFigureChangedListener{
private int fontSizeOffset;
private double lineWidthOffset;
private FigureSWTApplet parent;
public RunTimePropertyAdjuster(FigureSWTApplet parent) {
fontSizeOffset = 0;
lineWidthOffset = 0;
this.parent = parent;
}
@Override
public Object adoptPropertyVal(Properties prop, Object val) {
switch(prop){
case FONT_SIZE : return Math.max(1,((Integer)val) + fontSizeOffset);
case LINE_WIDTH : if((Double)val == 0){
return 0.0;
} else {
return Math.max(0,((Double)val) + lineWidthOffset);
}
default : return val;
}
}
public boolean handleKeyPress(KeyEvent e){
if((e.stateMask & SWT.CONTROL) != 0){
if(e.keyCode == '='){
fontSizeOffset+=1;
parent.getExectutionEnv().fakeRascalCallBack();
return true;
} else if(e.keyCode == '-'){
fontSizeOffset-=1;
parent.getExectutionEnv().fakeRascalCallBack();
return true;
}
} else if((e.stateMask & SWT.SHIFT) != 0){
if(e.keyCode == '='){
lineWidthOffset+=0.5;
parent.getExectutionEnv().fakeRascalCallBack();
return true;
} else if(e.keyCode == '-'){
lineWidthOffset-=0.5;
parent.getExectutionEnv().fakeRascalCallBack();
return true;
}
}
return false;
}
@Override
public void notifyFigureChanged() {
}
public void dispose() {
}
}