/* * ####################################################### * * Copyright (c) 2013, A. Weinberger. All rights reserved. * -------------------------------------------------------- */ package ale.view.gui.editor.menus; import java.awt.Color; import java.io.File; import java.nio.file.Path; import javax.swing.JPanel; import javax.swing.JTabbedPane; import ale.controller.Main; import ale.model.skin.SkinConstants.Imagetype; import ale.model.skin.SkinConstants.Position; import ale.model.skin.SkinPropertiesVO; import ale.view.gui.editor.fields.CheckField; import ale.view.gui.editor.fields.ImageField; import ale.view.gui.editor.fields.Numberfield; import ale.view.gui.editor.fields.PaddingField; import ale.view.gui.editor.fields.PositionField; import ale.view.gui.editor.fields.SizeField; import ale.view.gui.util.VerticalLayout; public final class UserlistChangesMenu extends ChangesMenus { private boolean init_1; private JPanel userlistImageMenu; private JPanel userlistImageframeMenu; private JPanel userlistLayoutMenu; private SkinPropertiesVO skin; public UserlistChangesMenu(Color bg, SkinPropertiesVO skin) { this.skin = skin; initialize(bg); } private void initialize(final Color bg) { Runnable _runOne = new Runnable() { @Override public void run() { initUserlistImageMenu(bg); initUserlistImageframeMenu(bg); initUserlistLayoutMenu(bg); UserlistChangesMenu.this.init_1 = true; } }; Main.executeThreads(_runOne); } public boolean isInitialized() { return this.init_1; } public void shutdown() { this.userlistImageMenu = null; this.userlistImageframeMenu = null; this.userlistLayoutMenu = null; } public JPanel getUserlistImageMenu() { if (!this.init_1) { IllegalStateException e = new IllegalStateException("Call init first!"); throw e; } return this.userlistImageMenu; } public JPanel getUserlistImageframeMenu() { if (!this.init_1) { IllegalStateException e = new IllegalStateException("Call init first!"); throw e; } return this.userlistImageframeMenu; } public JPanel getUserlistLayoutMenu() { if (!this.init_1) { IllegalStateException e = new IllegalStateException("Call init first!"); throw e; } return this.userlistLayoutMenu; } /* * ########################################################################## ## */ private void initUserlistImageMenu(Color bg) { this.userlistImageMenu = new JPanel(); this.userlistImageMenu.setBackground(bg); this.userlistImageMenu.setLayout(new VerticalLayout(5, VerticalLayout.LEFT)); // size int[] size = new int[] { this.skin.getUserlistImageWidth(), this.skin.getUserlistImageHeight() }; this.userlistImageMenu.add(new SizeField(size, 4, bg, strSizeFieldTitle, true) { private final long serialVersionUID = 1L; @Override public void widthOnKeyReleased(String input) { if (!UserlistChangesMenu.this.skin.setUserlistImageWidth(parseInt(input))) { updateWidthfieldColor(Color.RED); } } @Override public void heightOnKeyReleased(String input) { if (!UserlistChangesMenu.this.skin.setUserlistImageHeight(parseInt(input))) { updateHeightfieldColor(Color.RED); } } @Override public void resetOnClick() { UserlistChangesMenu.this.skin.setUserlistImageWidth(-1); UserlistChangesMenu.this.skin.setUserlistImageHeight(-1); update(UserlistChangesMenu.this.skin.getUserlistImageWidth(), UserlistChangesMenu.this.skin.getUserlistImageHeight()); } }); // padding final int[] padding = this.skin.getUserlistImagePadding(); this.userlistImageMenu.add(new PaddingField(padding, bg, strPaddingFieldTitle) { private final long serialVersionUID = 1L; private int[] tmp = (padding == null) ? new int[] { 0, 0, 0, 0 } : padding; @Override public void topFieldOnKeyReleased(String input) { controlAndSet(input, 1); } @Override public void rightFieldOnKeyReleased(String input) { controlAndSet(input, 2); } @Override public void leftFieldOnKeyReleased(String input) { controlAndSet(input, 0); } @Override public void bottomFieldOnKeyReleased(String input) { controlAndSet(input, 3); } private void controlAndSet(String s, int index) { int i = FAILURE; if (s != null) { try { i = Integer.parseInt(s); } catch (NumberFormatException e) { i = FAILURE; } } if (i == FAILURE) { UserlistChangesMenu.this.skin.setUserlistImagePadding(null); } else { this.tmp[index] = i; UserlistChangesMenu.this.skin.setUserlistImagePadding(this.tmp); } } @Override public int[] reset() { UserlistChangesMenu.this.skin.setUserlistImagePadding(null); this.tmp = UserlistChangesMenu.this.skin.getUserlistImagePadding(); return this.tmp; } }); } private void initUserlistImageframeMenu(Color bg) { this.userlistImageframeMenu = new JPanel(); this.userlistImageframeMenu.setBackground(bg); this.userlistImageframeMenu.setLayout(new VerticalLayout(5, VerticalLayout.LEFT)); // image { Path initialValue = this.skin.getImgPath_UserlistImage(Imagetype.DEFAULT); ImageField defaultImage = new ImageField(initialValue, bg, true) { private final long serialVersionUID = 1L; @Override public void onFileChosen(File file) { if (file != null) { UserlistChangesMenu.this.skin.setImgPath_UserlistImage(file.toPath(), Imagetype.DEFAULT); updatePathField(UserlistChangesMenu.this.skin.getImgPath_UserlistImage(Imagetype.DEFAULT), false); } else { UserlistChangesMenu.this.skin.setImgPath_UserlistImage(null, Imagetype.DEFAULT); updatePathField(UserlistChangesMenu.this.skin.getImgPath_UserlistImage(Imagetype.DEFAULT), true); } } }; initialValue = this.skin.getImgPath_UserlistImage(Imagetype.MOUSEFOCUS); ImageField focusImage = new ImageField(initialValue, bg, true) { private final long serialVersionUID = 1L; @Override public void onFileChosen(File file) { if (file != null) { UserlistChangesMenu.this.skin.setImgPath_UserlistImage(file.toPath(), Imagetype.MOUSEFOCUS); UserlistChangesMenu.this.skin.setImgPath_UserlistImage(file.toPath(), Imagetype.FOCUSSELECTED); updatePathField(UserlistChangesMenu.this.skin.getImgPath_UserlistImage(Imagetype.MOUSEFOCUS), false); } else { UserlistChangesMenu.this.skin.setImgPath_UserlistImage(null, Imagetype.MOUSEFOCUS); UserlistChangesMenu.this.skin.setImgPath_UserlistImage(null, Imagetype.FOCUSSELECTED); updatePathField(UserlistChangesMenu.this.skin.getImgPath_UserlistImage(Imagetype.MOUSEFOCUS), true); } } }; initialValue = this.skin.getImgPath_UserlistImage(Imagetype.SELECTED); ImageField pressedImage = new ImageField(initialValue, bg, true) { private final long serialVersionUID = 1L; @Override public void onFileChosen(File file) { if (file != null) { UserlistChangesMenu.this.skin.setImgPath_UserlistImage(file.toPath(), Imagetype.SELECTED); updatePathField(UserlistChangesMenu.this.skin.getImgPath_UserlistImage(Imagetype.SELECTED), false); } else { UserlistChangesMenu.this.skin.setImgPath_UserlistImage(null, Imagetype.SELECTED); updatePathField(UserlistChangesMenu.this.skin.getImgPath_UserlistImage(Imagetype.SELECTED), true); } } }; JTabbedPane pane = createTabbedPane(bg, strImgFieldTitle + "(" + strUserimageOverlay + ")", defaultImage, focusImage, pressedImage); pane.setTitleAt(0, strImageDefault); pane.setTitleAt(1, strImageFocus); pane.setTitleAt(2, strImageSelected); this.userlistImageframeMenu.add(pane); } // size int[] size = new int[] { this.skin.getUserlistImageFrameWidth(), this.skin.getUserlistImageFrameHeight() }; this.userlistImageframeMenu.add(new SizeField(size, 4, bg, strSizeFieldTitle, true) { private final long serialVersionUID = 1L; @Override public void widthOnKeyReleased(String input) { if (!UserlistChangesMenu.this.skin.setUserlistImageFrameWidth(parseInt(input))) { updateWidthfieldColor(Color.RED); } } @Override public void heightOnKeyReleased(String input) { if (!UserlistChangesMenu.this.skin.setUserlistImageFrameHeight(parseInt(input))) { updateHeightfieldColor(Color.RED); } } @Override public void resetOnClick() { UserlistChangesMenu.this.skin.setUserlistImageFrameWidth(-1); UserlistChangesMenu.this.skin.setUserlistImageFrameHeight(-1); update(UserlistChangesMenu.this.skin.getUserlistImageFrameWidth(), UserlistChangesMenu.this.skin.getUserlistImageFrameHeight()); } }); } /* * */ private void initUserlistLayoutMenu(Color bg) { this.userlistLayoutMenu = new JPanel(); this.userlistLayoutMenu.setBackground(bg); this.userlistLayoutMenu.setLayout(new VerticalLayout(5, VerticalLayout.LEFT)); // size this.userlistLayoutMenu.add(new Numberfield(this.skin.getUserlistHeight(), 3, bg, strSizeFieldTitle, strNumfieldHeight, true) { private final long serialVersionUID = 1L; @Override public void onKeyReleased(String input) { if (!UserlistChangesMenu.this.skin.setUserlistHeight(parseInt(input))) { update(Color.RED); } } @Override public void resetOnClick() { UserlistChangesMenu.this.skin.setUserlistHeight(-1); update(UserlistChangesMenu.this.skin.getUserlistHeight()); } }); // checkbox boolean b = this.skin.getUserlistVertical(); this.userlistLayoutMenu.add(new CheckField(b, bg, strUserlistVTitle, strUserlistVBtn) { private final long serialVersionUID = 1L; @Override public void btnPressed(boolean selected) { UserlistChangesMenu.this.skin.setUserlistVertical(selected); } }); // position Position pos = this.skin.getUserlistPosition(); boolean[] active = { true, true, true, true, true, true, true, true, true }; this.userlistLayoutMenu.add(new PositionField(pos, active, bg, strPosFieldTitle) { private final long serialVersionUID = 1L; @Override public void toprightOnPressed() { UserlistChangesMenu.this.skin.setUserlistPosition(Position.TOPRIGHT); } @Override public void topleftOnPressed() { UserlistChangesMenu.this.skin.setUserlistPosition(Position.TOPLEFT); } @Override public void topOnPressed() { UserlistChangesMenu.this.skin.setUserlistPosition(Position.TOP); } @Override public void centerrightOnPressed() { UserlistChangesMenu.this.skin.setUserlistPosition(Position.RIGHT); } @Override public void centerleftOnPressed() { UserlistChangesMenu.this.skin.setUserlistPosition(Position.LEFT); } @Override public void centerOnPressed() { UserlistChangesMenu.this.skin.setUserlistPosition(Position.CENTER); } @Override public void bottomrightOnPressed() { UserlistChangesMenu.this.skin.setUserlistPosition(Position.BOTTOMRIGHT); } @Override public void bottomleftOnPressed() { UserlistChangesMenu.this.skin.setUserlistPosition(Position.BOTTOMLEFT); } @Override public void bottomOnPressed() { UserlistChangesMenu.this.skin.setUserlistPosition(Position.BOTTOM); } }); // padding final int[] padding = this.skin.getUserlistPadding(); this.userlistLayoutMenu.add(new PaddingField(padding, bg, strPaddingFieldTitle + "(" + strUserlistPaddingHint + ")") { private final long serialVersionUID = 1L; private int[] tmp = (padding == null) ? new int[] { 0, 0, 0, 0 } : padding; @Override public void topFieldOnKeyReleased(String input) { controlAndSet(input, 1); } @Override public void rightFieldOnKeyReleased(String input) { controlAndSet(input, 2); } @Override public void leftFieldOnKeyReleased(String input) { controlAndSet(input, 0); } @Override public void bottomFieldOnKeyReleased(String input) { controlAndSet(input, 3); } private void controlAndSet(String s, int index) { int i = FAILURE; if (s != null) { try { i = Integer.parseInt(s); } catch (NumberFormatException e) { i = FAILURE; } } if (i == FAILURE) { UserlistChangesMenu.this.skin.setUserlistPadding(null); } else { this.tmp[index] = i; UserlistChangesMenu.this.skin.setUserlistPadding(this.tmp); } } @Override public int[] reset() { UserlistChangesMenu.this.skin.setUserlistPadding(null); this.tmp = UserlistChangesMenu.this.skin.getUserlistPadding(); return this.tmp; } }); } }