mirror of
https://github.com/badvision/lawless-legends.git
synced 2025-02-20 05:29:09 +00:00
Added state preservation logic to image editor to keep brush and fill pattern selections intact when switching images
This commit is contained in:
parent
5da472806d
commit
547d0c72f4
@ -4,6 +4,7 @@
|
||||
*/
|
||||
package org.badvision.outlaweditor;
|
||||
|
||||
import java.util.EnumMap;
|
||||
import javafx.scene.control.Menu;
|
||||
import org.badvision.outlaweditor.data.xml.Image;
|
||||
import org.badvision.outlaweditor.data.xml.PlatformData;
|
||||
@ -19,6 +20,10 @@ public abstract class ImageEditor extends Editor<Image, ImageEditor.DrawMode> {
|
||||
Toggle, Pencil1px, Pencil3px, Pencil5px, Rectangle, Circle, Stamp
|
||||
}
|
||||
|
||||
abstract public EnumMap getState();
|
||||
|
||||
abstract public void setState(EnumMap oldState);
|
||||
|
||||
abstract public void buildPatternSelector(Menu tilePatternMenu);
|
||||
|
||||
public abstract void togglePanZoom();
|
||||
|
@ -4,6 +4,7 @@ import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.EnumMap;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
@ -44,6 +45,7 @@ public class AppleImageEditor extends ImageEditor implements EventHandler<MouseE
|
||||
protected double zoom = 1.0;
|
||||
protected int xScale = 2;
|
||||
protected int yScale = 2;
|
||||
public static enum StateVars{PATTERN, DRAW_MODE};
|
||||
|
||||
public Platform getPlatform() {
|
||||
return Platform.AppleII;
|
||||
@ -66,6 +68,7 @@ public class AppleImageEditor extends ImageEditor implements EventHandler<MouseE
|
||||
public void buildPatternSelector(Menu tilePatternMenu) {
|
||||
FillPattern.buildMenu(tilePatternMenu, (FillPattern object) -> {
|
||||
changeCurrentPattern(object);
|
||||
state.put(StateVars.PATTERN, object);
|
||||
});
|
||||
}
|
||||
|
||||
@ -76,11 +79,29 @@ public class AppleImageEditor extends ImageEditor implements EventHandler<MouseE
|
||||
lastActionY = -1;
|
||||
}
|
||||
|
||||
EnumMap<StateVars, Object> state = new EnumMap<>(StateVars.class);
|
||||
@Override
|
||||
public EnumMap getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setState(EnumMap oldState) {
|
||||
state.putAll(oldState);
|
||||
changeCurrentPattern((FillPattern) state.get(StateVars.PATTERN));
|
||||
_setDrawMode((DrawMode) state.get(StateVars.DRAW_MODE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDrawMode(DrawMode drawMode) {
|
||||
_setDrawMode(drawMode);
|
||||
state.put(StateVars.DRAW_MODE, drawMode);
|
||||
}
|
||||
|
||||
private void _setDrawMode(DrawMode drawMode) {
|
||||
currentDrawMode = drawMode;
|
||||
lastActionX = -1;
|
||||
lastActionY = -1;
|
||||
lastActionY = -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package org.badvision.outlaweditor.ui.impl;
|
||||
|
||||
import java.util.EnumMap;
|
||||
import java.util.List;
|
||||
import org.badvision.outlaweditor.ui.EntitySelectorCell;
|
||||
import java.util.logging.Level;
|
||||
@ -163,14 +164,16 @@ public class ImageEditorTabControllerImpl extends ImageEditorTabController {
|
||||
}
|
||||
|
||||
private void setCurrentImage(Image i) {
|
||||
imageNameField.textProperty().removeListener(rebuildListener);
|
||||
imageCategoryField.textProperty().removeListener(rebuildListener);
|
||||
if (currentImage != null && currentImage.equals(i)) {
|
||||
return;
|
||||
}
|
||||
imageNameField.textProperty().removeListener(rebuildListener);
|
||||
imageCategoryField.textProperty().removeListener(rebuildListener);
|
||||
imageSelector.getSelectionModel().select(i);
|
||||
currentImage = i;
|
||||
EnumMap oldEditorState = null;
|
||||
if (currentImageEditor != null) {
|
||||
oldEditorState = currentImageEditor.getState();
|
||||
currentImageEditor.unregister();
|
||||
}
|
||||
if (i == null) {
|
||||
@ -209,6 +212,9 @@ public class ImageEditorTabControllerImpl extends ImageEditorTabController {
|
||||
imageEditorZoomGroup.setScaleY(1.0);
|
||||
imageNameField.textProperty().addListener(rebuildListener);
|
||||
imageCategoryField.textProperty().addListener(rebuildListener);
|
||||
if (oldEditorState != null) {
|
||||
currentImageEditor.setState(oldEditorState);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user