Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace string comparisons with OverlayType enum in Token States #3846

Merged
merged 4 commits into from
Feb 27, 2023
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,9 @@ dependencies {
// commandline parsing
implementation 'commons-cli:commons-cli:1.4'

// needed for preference dialog at runtime
implementation 'commons-beanutils:commons-beanutils:1.9.4'

// RPTool Libs
// default ressources (token, textures etc.)
implementation 'com.github.RPTools:maptool-resources:1.6.0'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,25 @@ public class TokenStatesController
{true, false, false, true, false, false}, // Flow Square
};

private enum OverlayType {
Image,
CornerImage,
GridImage,
Dot,
GridDot,
Circle,
Shaded,
X,
Cross,
Diamond,
GridDiamond,
Yield,
GridYield,
Triangle,
GridTriangle,
GridSquare
}
// the order needs to match the OverlayType enum
private static final List<String> types =
List.of(
"CampaignPropertiesDialog.combo.states.type.image",
Expand All @@ -234,6 +253,7 @@ public class TokenStatesController
"CampaignPropertiesDialog.combo.states.type.gridTriangle",
"CampaignPropertiesDialog.combo.states.type.gridSquare");

// the order needs to match the AbstractTemplate.Quadrant enum
private static final List<String> corners =
List.of(
"CampaignPropertiesDialog.combo.states.corner.topRight",
Expand Down Expand Up @@ -453,8 +473,11 @@ public String getDescription() {
@Override
public void changedUpdate(DocumentEvent e) {
String text = formPanel.getTextComponent(IMAGE).getText();
var overlayType = OverlayType.values()[formPanel.getComboBox(TYPE).getSelectedIndex()];
boolean hasImage =
!((String) formPanel.getComboBox(TYPE).getSelectedItem()).contains("Image")
!(overlayType == OverlayType.CornerImage
|| overlayType == OverlayType.GridImage
|| overlayType == OverlayType.Image)
|| text != null && (text = text.trim()).length() != 0;
text = formPanel.getTextComponent(NAME).getText();
boolean hasName = text != null && (text = text.trim()).length() != 0;
Expand Down Expand Up @@ -517,62 +540,62 @@ public void valueChanged(ListSelectionEvent e) {
formPanel.getCheckBox(SHOW_OTHERS).setSelected(s.isShowOthers());

// Get most of the colors and all of the widths from the XTokenOverlay
int type = -1;
OverlayType type = OverlayType.Image;
if (s instanceof XTokenOverlay) {
type = 7;
type = OverlayType.X;
formPanel.getSpinner(WIDTH).setValue(((XTokenOverlay) s).getWidth());
((ColorWell) formPanel.getComponent(COLOR)).setColor(((XTokenOverlay) s).getColor());
} // endif

// Get the the flow grid for most components from FlowColorDotTokenOverlay
if (s instanceof FlowColorDotTokenOverlay) {
type = 4;
type = OverlayType.GridDot;
int size = ((FlowColorDotTokenOverlay) s).getGrid();
formPanel.getSpinner(FLOW_GRID).setValue(size + "x" + size);
} // endif

// Handle the
if (s instanceof CornerImageTokenOverlay) {
type = 1;
type = OverlayType.CornerImage;
formPanel
.getComboBox(CORNER)
.setSelectedIndex(((CornerImageTokenOverlay) s).getCorner().ordinal());
} else if (s instanceof FlowImageTokenOverlay) {
type = 2;
type = OverlayType.GridImage;
int size = ((FlowImageTokenOverlay) s).getGrid(); // Still need grid size
formPanel.getSpinner(FLOW_GRID).setValue(size + "x" + size);
} else if (s instanceof ImageTokenOverlay) {
type = 0;
type = OverlayType.Image;
} else if (s instanceof ColorDotTokenOverlay) {
type = 3;
type = OverlayType.Dot;
formPanel
.getComboBox(CORNER)
.setSelectedIndex(((ColorDotTokenOverlay) s).getCorner().ordinal());
} else if (s instanceof OTokenOverlay) {
type = 5;
type = OverlayType.Circle;
} else if (s instanceof ShadedTokenOverlay) {
type = 6;
type = OverlayType.Shaded;
((ColorWell) formPanel.getComponent(COLOR)).setColor(((ShadedTokenOverlay) s).getColor());
} else if (s instanceof CrossTokenOverlay) {
type = 8;
type = OverlayType.Cross;
} else if (s instanceof DiamondTokenOverlay) {
type = 9;
type = OverlayType.Diamond;
} else if (s instanceof FlowDiamondTokenOverlay) {
type = 10;
type = OverlayType.GridDiamond;
} else if (s instanceof YieldTokenOverlay) {
type = 11;
type = OverlayType.Yield;
} else if (s instanceof FlowYieldTokenOverlay) {
type = 12;
type = OverlayType.GridYield;
} else if (s instanceof TriangleTokenOverlay) {
type = 13;
type = OverlayType.Triangle;
} else if (s instanceof FlowTriangleTokenOverlay) {
type = 14;
type = OverlayType.GridTriangle;
} else if (s instanceof FlowColorSquareTokenOverlay) {
type = 15;
type = OverlayType.GridSquare;
} // endif

// Set the type and change components
formPanel.getComboBox(TYPE).setSelectedIndex(type);
formPanel.getComboBox(TYPE).setSelectedIndex(type.ordinal());
enableDataComponents();
}
}
Expand Down Expand Up @@ -690,7 +713,7 @@ public BooleanTokenOverlay createTokenOverlay(BooleanTokenOverlay updatedOverlay
String name = formPanel.getTextComponent(NAME).getText();
String group = formPanel.getTextComponent(GROUP).getText();
boolean mouseover = formPanel.getCheckBox(MOUSEOVER).isSelected();
String overlay = ((String) formPanel.getComboBox(TYPE).getSelectedItem());
var overlay = OverlayType.values()[formPanel.getComboBox(TYPE).getSelectedIndex()];
int opacity = getSpinner(OPACITY, "opacity", formPanel);
int index = getSpinner(INDEX, "index", formPanel);
boolean showGM = formPanel.getCheckBox(SHOW_GM).isSelected();
Expand All @@ -699,10 +722,11 @@ public BooleanTokenOverlay createTokenOverlay(BooleanTokenOverlay updatedOverlay

// Check for overlays that don't use width
BooleanTokenOverlay to = null;
if (overlay.equals("Dot")) {
String cornerName = ((String) formPanel.getComboBox(CORNER).getSelectedItem());
to = new ColorDotTokenOverlay(name, color, Quadrant.valueOf(cornerName));
} else if (overlay.equals("Shaded")) {
if (overlay == OverlayType.Dot) {
to =
new ColorDotTokenOverlay(
name, color, Quadrant.values()[formPanel.getComboBox(CORNER).getSelectedIndex()]);
} else if (overlay == OverlayType.Shaded) {
to = new ShadedTokenOverlay(name, color);
} // endif

Expand All @@ -711,37 +735,37 @@ public BooleanTokenOverlay createTokenOverlay(BooleanTokenOverlay updatedOverlay
if (to == null) {
String sGrid = (String) formPanel.getSpinner(FLOW_GRID).getValue();
grid = Integer.parseInt(sGrid.substring(0, 1));
if (overlay.equals("Grid Dot")) {
if (overlay == OverlayType.GridDot) {
to = new FlowColorDotTokenOverlay(name, color, grid);
}
if (overlay.equals("Grid Square")) {
if (overlay == OverlayType.GridSquare) {
to = new FlowColorSquareTokenOverlay(name, color, grid);
}
if (overlay.equals("Grid Triangle")) {
if (overlay == OverlayType.GridTriangle) {
to = new FlowTriangleTokenOverlay(name, color, grid);
}
if (overlay.equals("Grid Diamond")) {
if (overlay == OverlayType.GridDiamond) {
to = new FlowDiamondTokenOverlay(name, color, grid);
}
if (overlay.equals("Grid Yield")) {
if (overlay == OverlayType.GridYield) {
to = new FlowYieldTokenOverlay(name, color, grid);
} // endif
} // endif

// Handle all of the overlays with width
if (to == null) {
int width = getSpinner(WIDTH, "width", formPanel);
if (overlay.equals("Circle")) {
if (overlay == OverlayType.Circle) {
to = new OTokenOverlay(name, color, width);
} else if (overlay.equals("X")) {
} else if (overlay == OverlayType.X) {
to = new XTokenOverlay(name, color, width);
} else if (overlay.equals("Cross")) {
} else if (overlay == OverlayType.Cross) {
to = new CrossTokenOverlay(name, color, width);
} else if (overlay.equals("Diamond")) {
} else if (overlay == OverlayType.Diamond) {
to = new DiamondTokenOverlay(name, color, width);
} else if (overlay.equals("Yield")) {
} else if (overlay == OverlayType.Yield) {
to = new YieldTokenOverlay(name, color, width);
} else if (overlay.equals("Triangle")) {
} else if (overlay == OverlayType.Triangle) {
to = new TriangleTokenOverlay(name, color, width);
} // endif
} // endif
Expand All @@ -760,12 +784,15 @@ public BooleanTokenOverlay createTokenOverlay(BooleanTokenOverlay updatedOverlay

// Create all of the image overlays
if (assetId != null) {
if (overlay.equals("Image")) {
if (overlay == OverlayType.Image) {
to = new ImageTokenOverlay(name, assetId);
} else if (overlay.equals("Corner Image")) {
String cornerName = ((String) formPanel.getComboBox(CORNER).getSelectedItem());
to = new CornerImageTokenOverlay(name, assetId, Quadrant.valueOf(cornerName));
} else if (overlay.equals("Grid Image")) {
} else if (overlay == OverlayType.CornerImage) {
to =
new CornerImageTokenOverlay(
name,
assetId,
Quadrant.values()[formPanel.getComboBox(CORNER).getSelectedIndex()]);
} else if (overlay == OverlayType.GridImage) {
to = new FlowImageTokenOverlay(name, assetId, grid);
} // endif
} // endif
Expand Down