mirror of https://github.com/FreeCol/freecol.git
Removing ClassicMapControls since CornerMapControls is skinable. The latter can be expanded with more functionality if needed.
This commit is contained in:
parent
13a490ce67
commit
53c96b7a29
|
@ -155,14 +155,7 @@
|
||||||
defaultValue="false"/>
|
defaultValue="false"/>
|
||||||
<!-- Whether to display the map controls by default or not. -->
|
<!-- Whether to display the map controls by default or not. -->
|
||||||
<booleanOption id="model.option.displayMapControls"
|
<booleanOption id="model.option.displayMapControls"
|
||||||
defaultValue="true"/>
|
defaultValue="true"/>
|
||||||
<!-- What type of map controls, corner or classic? -->
|
|
||||||
<stringOption id="model.option.mapControls"
|
|
||||||
defaultValue="clientOptions.gui.mapControls.CornerMapControls">
|
|
||||||
<choice value="clientOptions.gui.mapControls.CornerMapControls"/>
|
|
||||||
<choice value="clientOptions.gui.mapControls.ClassicMapControls"/>
|
|
||||||
</stringOption>
|
|
||||||
|
|
||||||
<!-- Draw the fog of war on the minimap. -->
|
<!-- Draw the fog of war on the minimap. -->
|
||||||
<booleanOption id="model.option.miniMapToggleFogOfWar"
|
<booleanOption id="model.option.miniMapToggleFogOfWar"
|
||||||
defaultValue="true"/>
|
defaultValue="true"/>
|
||||||
|
|
|
@ -874,6 +874,9 @@ public class ClientOptions extends OptionGroup {
|
||||||
addPercentageOption(MUSIC_VOLUME, AUDIO_GROUP, 100);
|
addPercentageOption(MUSIC_VOLUME, AUDIO_GROUP, 100);
|
||||||
addPercentageOption(SOUND_EFFECTS_VOLUME, AUDIO_GROUP, 100);
|
addPercentageOption(SOUND_EFFECTS_VOLUME, AUDIO_GROUP, 100);
|
||||||
// end @compat 0.13.0
|
// end @compat 0.13.0
|
||||||
|
// @compat 1.1.0
|
||||||
|
remove("model.option.mapControls");
|
||||||
|
// end @compat 1.1.0
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addPercentageOption(String id, String gr, int val) {
|
private void addPercentageOption(String id, String gr, int val) {
|
||||||
|
|
|
@ -68,6 +68,7 @@ import net.sf.freecol.client.gui.mapviewer.MapViewer;
|
||||||
import net.sf.freecol.client.gui.mapviewer.MapViewerState;
|
import net.sf.freecol.client.gui.mapviewer.MapViewerState;
|
||||||
import net.sf.freecol.client.gui.mapviewer.TileViewer;
|
import net.sf.freecol.client.gui.mapviewer.TileViewer;
|
||||||
import net.sf.freecol.client.gui.panel.ColonyPanel;
|
import net.sf.freecol.client.gui.panel.ColonyPanel;
|
||||||
|
import net.sf.freecol.client.gui.panel.CornerMapControls;
|
||||||
import net.sf.freecol.client.gui.panel.FreeColImageBorder;
|
import net.sf.freecol.client.gui.panel.FreeColImageBorder;
|
||||||
import net.sf.freecol.client.gui.panel.FreeColPanel;
|
import net.sf.freecol.client.gui.panel.FreeColPanel;
|
||||||
import net.sf.freecol.client.gui.panel.InformationPanel;
|
import net.sf.freecol.client.gui.panel.InformationPanel;
|
||||||
|
@ -795,7 +796,8 @@ public class SwingGUI extends GUI {
|
||||||
public void startGUI(final Dimension desiredWindowSize) {
|
public void startGUI(final Dimension desiredWindowSize) {
|
||||||
final FreeColClient fcc = getFreeColClient();
|
final FreeColClient fcc = getFreeColClient();
|
||||||
final ClientOptions opts = getClientOptions();
|
final ClientOptions opts = getClientOptions();
|
||||||
this.mapControls = MapControls.newInstance(fcc);
|
this.mapControls = new CornerMapControls(fcc);
|
||||||
|
|
||||||
final ActionListener al = (ActionEvent ae) -> {
|
final ActionListener al = (ActionEvent ae) -> {
|
||||||
final Tile tile = mapViewer.getMapViewerState().getCursorTile();
|
final Tile tile = mapViewer.getMapViewerState().getCursorTile();
|
||||||
if (tile != null) {
|
if (tile != null) {
|
||||||
|
|
|
@ -1,160 +0,0 @@
|
||||||
/**
|
|
||||||
* Copyright (C) 2002-2022 The FreeCol Team
|
|
||||||
*
|
|
||||||
* This file is part of FreeCol.
|
|
||||||
*
|
|
||||||
* FreeCol is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* FreeCol is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with FreeCol. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package net.sf.freecol.client.gui.panel;
|
|
||||||
|
|
||||||
import java.awt.Component;
|
|
||||||
import java.awt.Dimension;
|
|
||||||
import java.awt.Font;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import javax.swing.JButton;
|
|
||||||
import javax.swing.JPanel;
|
|
||||||
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
|
||||||
|
|
||||||
import net.sf.freecol.client.FreeColClient;
|
|
||||||
import net.sf.freecol.client.gui.action.ActionManager;
|
|
||||||
import net.sf.freecol.client.gui.ImageLibrary;
|
|
||||||
import net.sf.freecol.common.resources.ResourceManager;
|
|
||||||
import static net.sf.freecol.common.util.StringUtils.*;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A collection of panels and buttons that are used to provide the
|
|
||||||
* user with a more detailed view of certain elements on the map and
|
|
||||||
* also to provide a means of input in case the user can't use the
|
|
||||||
* keyboard.
|
|
||||||
*/
|
|
||||||
public final class ClassicMapControls extends MapControls {
|
|
||||||
|
|
||||||
/** The main panel. */
|
|
||||||
private final JPanel panel;
|
|
||||||
|
|
||||||
/** A font for the buttons. */
|
|
||||||
private final Font arrowFont;
|
|
||||||
|
|
||||||
/** Helper container for the abstract API functions. */
|
|
||||||
private final List<Component> componentList = new ArrayList<>();
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The basic constructor.
|
|
||||||
*
|
|
||||||
* @param freeColClient The {@code FreeColClient} for the game.
|
|
||||||
*/
|
|
||||||
public ClassicMapControls(final FreeColClient freeColClient) {
|
|
||||||
super(freeColClient, false);
|
|
||||||
|
|
||||||
final ImageLibrary lib = freeColClient.getGUI().getFixedImageLibrary();
|
|
||||||
|
|
||||||
this.panel = new MigPanel(new MigLayout("wrap 3"));
|
|
||||||
this.panel.add(this.miniMap, "span"
|
|
||||||
+ ", width " + lib.scaleInt(MINI_MAP_WIDTH)
|
|
||||||
+ ", height " + lib.scaleInt(MINI_MAP_HEIGHT));
|
|
||||||
this.panel.add(this.miniMapZoomInButton, "newline 10");
|
|
||||||
this.panel.add(this.miniMapZoomOutButton, "skip");
|
|
||||||
|
|
||||||
String[] arrows = {
|
|
||||||
ResourceManager.getString("arrow.NW"),
|
|
||||||
ResourceManager.getString("arrow.N"),
|
|
||||||
ResourceManager.getString("arrow.NE"),
|
|
||||||
ResourceManager.getString("arrow.W"),
|
|
||||||
ResourceManager.getString("arrow.E"),
|
|
||||||
ResourceManager.getString("arrow.SW"),
|
|
||||||
ResourceManager.getString("arrow.S"),
|
|
||||||
ResourceManager.getString("arrow.SE"),
|
|
||||||
};
|
|
||||||
|
|
||||||
this.arrowFont = lib.getScaledFont("simple-bold-small",
|
|
||||||
join("", arrows));
|
|
||||||
this.panel.add(makeButton("NW", arrows[0]), "newline 20");
|
|
||||||
this.panel.add(makeButton("N", arrows[1]));
|
|
||||||
this.panel.add(makeButton("NE", arrows[2]));
|
|
||||||
this.panel.add(makeButton("W", arrows[3]));
|
|
||||||
this.panel.add(makeButton("E", arrows[4]), "skip");
|
|
||||||
this.panel.add(makeButton("SW", arrows[5]));
|
|
||||||
this.panel.add(makeButton("S", arrows[6]));
|
|
||||||
this.panel.add(makeButton("SE", arrows[7]), "wrap 20");
|
|
||||||
// initialization completes in initializeUnitButtons
|
|
||||||
|
|
||||||
this.componentList.add(this.panel);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Makes a {@code JButton} for a given arrow direction.
|
|
||||||
* By default, the direction and arrow parameters should
|
|
||||||
* be the same literal direction, just formatted for a
|
|
||||||
* unique context.
|
|
||||||
*
|
|
||||||
* @param direction The Direction on the {@code Map} to move
|
|
||||||
* @param arrow The Direction of the arrow itself
|
|
||||||
* @return A JButton with the correct display and action
|
|
||||||
*
|
|
||||||
* @since 0.10.6
|
|
||||||
*/
|
|
||||||
private JButton makeButton(String direction, String arrow) {
|
|
||||||
final ActionManager am = getFreeColClient().getActionManager();
|
|
||||||
JButton button
|
|
||||||
= new JButton(am.getFreeColAction("moveAction." + direction));
|
|
||||||
button.setFont(arrowFont);
|
|
||||||
button.setText(arrow);
|
|
||||||
return button;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
protected boolean initializeUnitButtons() {
|
|
||||||
if (!super.initializeUnitButtons()) return false;
|
|
||||||
|
|
||||||
for (UnitButton ub : this.unitButtons) this.panel.add(ub);
|
|
||||||
this.panel.add(this.infoPanel, "newline push, span, width "
|
|
||||||
+ this.infoPanel.getWidth() + ", height "
|
|
||||||
+ this.infoPanel.getHeight());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Implement MapControls
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<Component> getComponentsToAdd(Dimension newSize) {
|
|
||||||
if (getGame() == null || this.panel.isShowing()) {
|
|
||||||
return Collections.<Component>emptyList();
|
|
||||||
}
|
|
||||||
int width = (int)this.panel.getPreferredSize().getWidth();
|
|
||||||
this.panel.setSize(width, newSize.height);
|
|
||||||
this.panel.setLocation(newSize.width - width, 0);
|
|
||||||
return this.componentList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<Component> getComponentsPresent() {
|
|
||||||
return (this.panel.isShowing()) ? this.componentList
|
|
||||||
: Collections.<Component>emptyList();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -196,29 +196,6 @@ public abstract class MapControls extends FreeColClientHolder {
|
||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new map controls instance for a FreeColClient.
|
|
||||||
*
|
|
||||||
* @param freeColClient The {@code FreeColClient} to query.
|
|
||||||
* @return A new {@code MapControls} or null on error.
|
|
||||||
*/
|
|
||||||
public static MapControls newInstance(final FreeColClient freeColClient) {
|
|
||||||
final String className = freeColClient.getClientOptions()
|
|
||||||
.getString(ClientOptions.MAP_CONTROLS);
|
|
||||||
final String panelName = "net.sf.freecol.client.gui.panel."
|
|
||||||
+ lastPart(className, ".");
|
|
||||||
try {
|
|
||||||
return (MapControls)Introspector.instantiate(panelName,
|
|
||||||
new Class[] { FreeColClient.class },
|
|
||||||
new Object[] { freeColClient });
|
|
||||||
} catch (Introspector.IntrospectorException ie) {
|
|
||||||
logger.log(Level.WARNING, "Failed in make map controls for: "
|
|
||||||
+ panelName, ie);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void clear() {
|
public void clear() {
|
||||||
unitButtons.clear();
|
unitButtons.clear();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue