[Improvement] Improved overall performance

[Bug Fix] Should be more stable under OSX and not crash unexpectedly
This commit is contained in:
bancika
2012-08-21 08:28:55 +00:00
parent 6e8e8b9d49
commit 0bc8141dc7
11 changed files with 65 additions and 24 deletions
@@ -8,6 +8,7 @@ import java.awt.event.ActionListener;
import java.awt.event.KeyListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -30,7 +31,7 @@ public class MeasureEditor extends Container {
@SuppressWarnings("unchecked")
public MeasureEditor(final PropertyWrapper property) {
setLayout(new BorderLayout());
AbstractMeasure measure = ((AbstractMeasure) property.getValue());
final AbstractMeasure measure = ((AbstractMeasure) property.getValue());
valueField = new DoubleTextField(measure.getValue());
oldBg = valueField.getBackground();
valueField.addPropertyChangeListener(DoubleTextField.VALUE_PROPERTY,
@@ -39,14 +40,24 @@ public class MeasureEditor extends Container {
@Override
public void propertyChange(PropertyChangeEvent evt) {
try {
AbstractMeasure<?> newMeasure = (AbstractMeasure<?>) ((AbstractMeasure) property
.getValue()).clone();
newMeasure.setValue((Double) evt.getNewValue());
Constructor ctor = measure.getClass().getConstructors()[0];
AbstractMeasure<?> newMeasure = (AbstractMeasure<?>) ctor.newInstance((Double) evt.getNewValue(), measure.getUnit());
property.setValue(newMeasure);
property.setChanged(true);
valueField.setBackground(oldBg);
unitBox.setBackground(oldBg);
} catch (CloneNotSupportedException ex) {
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
@@ -58,16 +69,26 @@ public class MeasureEditor extends Container {
unitBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
public void actionPerformed(ActionEvent evt) {
try {
AbstractMeasure<Enum<? extends Unit>> newMeasure = (AbstractMeasure<Enum<? extends Unit>>) ((AbstractMeasure) property
.getValue()).clone();
newMeasure.setUnit((Enum<? extends Unit>) unitBox.getSelectedItem());
Constructor ctor = measure.getClass().getConstructors()[0];
AbstractMeasure<?> newMeasure = (AbstractMeasure<?>) ctor.newInstance((Enum<? extends Unit>) unitBox.getSelectedItem());
property.setValue(newMeasure);
property.setChanged(true);
valueField.setBackground(oldBg);
unitBox.setBackground(oldBg);
} catch (CloneNotSupportedException ex) {
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
@@ -27,7 +27,7 @@ public class AutoSavePlugin implements IPlugIn {
public AutoSavePlugin(IView view) {
this.view = view;
executor = Executors.newSingleThreadExecutor();
executor = Executors.newSingleThreadExecutor();
}
@Override
@@ -66,17 +66,18 @@ public class AutoSavePlugin implements IPlugIn {
@Override
public void processMessage(EventType eventType, Object... params) {
if (eventType == EventType.PROJECT_MODIFIED) {
executor.execute(new Runnable() {
if (System.currentTimeMillis() - lastSave > autoSaveFrequency) {
executor.execute(new Runnable() {
@Override
public void run() {
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
@Override
public void run() {
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
if (System.currentTimeMillis() - lastSave > autoSaveFrequency) {
lastSave = System.currentTimeMillis();
plugInPort.saveProjectToFile(AUTO_SAVE_FILE_NAME, true);
}
}
});
});
}
}
}
}