Index: src/net/sf/freecol/client/gui/panel/DragListener.java
===================================================================
--- src/net/sf/freecol/client/gui/panel/DragListener.java (revision 10463)
+++ src/net/sf/freecol/client/gui/panel/DragListener.java (working copy)
@@ -30,6 +30,7 @@
import net.sf.freecol.client.FreeColClient;
import net.sf.freecol.client.gui.GUI;
+import net.sf.freecol.client.gui.panel.ColonyPanel.TilePanel.ASingleTilePanel;
import net.sf.freecol.common.model.GoodsType;
import net.sf.freecol.common.model.Unit;
@@ -90,6 +91,11 @@
((EuropePanel) parentPanel).revalidate();
((EuropePanel) parentPanel).refresh();
}
+ } else if (comp instanceof ASingleTilePanel
+ || (comp.getParent() != null &&
comp.getParent() instanceof ASingleTilePanel)) {
+ menu = new QuickActionMenu(freeColClient, gui,
parentPanel);
+ // Also check the parent to show the popup in the
center of the colony panel tile
+ menu.createTileMenu((ASingleTilePanel)(comp
instanceof ASingleTilePanel ? comp : comp.getParent()));
}
if (menu != null) {
int elements = menu.getSubElements().length;
Index: src/net/sf/freecol/client/gui/panel/ColonyPanel.java
===================================================================
--- src/net/sf/freecol/client/gui/panel/ColonyPanel.java (revision 10463)
+++ src/net/sf/freecol/client/gui/panel/ColonyPanel.java (working copy)
@@ -1597,6 +1597,7 @@
cleanup();
addPropertyChangeListeners();
+ addMouseListener(pressListener);
update();
}
@@ -1622,7 +1623,9 @@
ProductionInfo info = colony.getProductionInfo(colonyTile);
if (info != null) {
for (AbstractGoods ag : info.getProduction()) {
- add(new
ProductionLabel(getFreeColClient(), getGUI(), ag));
+ ProductionLabel productionLabel = new
ProductionLabel(getFreeColClient(), getGUI(), ag);
+ productionLabel.addMouseListener(pressListener);
+ add(productionLabel);
}
}
}
@@ -1841,6 +1844,10 @@
public boolean accepts(Goods goods) {
return false;
}
+
+ public ColonyTile getColonyTile() {
+ return colonyTile;
+ }
}
}
}
Index: src/net/sf/freecol/client/gui/panel/QuickActionMenu.java
===================================================================
--- src/net/sf/freecol/client/gui/panel/QuickActionMenu.java (revision 10463)
+++ src/net/sf/freecol/client/gui/panel/QuickActionMenu.java (working copy)
@@ -40,6 +40,7 @@
import net.sf.freecol.client.gui.GUI;
import net.sf.freecol.client.gui.ImageLibrary;
import net.sf.freecol.client.gui.i18n.Messages;
+import net.sf.freecol.client.gui.panel.ColonyPanel.TilePanel.ASingleTilePanel;
import net.sf.freecol.client.gui.panel.UnitLabel.UnitAction;
import net.sf.freecol.common.model.Ability;
import net.sf.freecol.common.model.AbstractGoods;
@@ -53,6 +54,7 @@
import net.sf.freecol.common.model.Location;
import net.sf.freecol.common.model.Specification;
import net.sf.freecol.common.model.StringTemplate;
+import net.sf.freecol.common.model.Tile;
import net.sf.freecol.common.model.Unit;
import net.sf.freecol.common.model.Unit.Role;
import net.sf.freecol.common.model.Unit.UnitState;
@@ -113,7 +115,10 @@
if (tempUnit.getLocation().getTile() != null) {
Colony colony = tempUnit.getLocation().getTile().getColony();
if (colony != null) {
- if (addWorkItems(unitLabel)) {
+ if (addTileItem(unitLabel)) {
+ this.addSeparator();
+ }
+ if (addWorkItems(unitLabel)) {
this.addSeparator();
}
if (addEducationItems(unitLabel)) {
@@ -600,6 +605,38 @@
}
return separatorNeeded;
}
+
+ /**
+ * Creates a menu for a tile.
+ */
+ public void createTileMenu(final ASingleTilePanel singleTilePanel) {
+ if (singleTilePanel.getColonyTile() != null &&
singleTilePanel.getColonyTile().getColony() != null) {
+ addTileItem(singleTilePanel.getColonyTile().getWorkTile());
+ }
+ }
+
+ private boolean addTileItem(final UnitLabel unitLabel) {
+ final Unit unit = unitLabel.getUnit();
+ if (unit.getWorkTile() != null) {
+ final Tile tile = unit.getWorkTile().getWorkTile();
+ addTileItem(tile);
+ return true;
+ }
+ return false;
+ }
+
+ private void addTileItem(final Tile tile) {
+ if (tile != null) {
+ JMenuItem menuItem = new
JMenuItem(Messages.message(tile.getNameKey()));
+ menuItem.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ gui.showTilePanel(tile);
+ }
+ });
+ add(menuItem);
+ }
+ }
+
/**
* Creates a menu for a good.
*/
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_123012
_______________________________________________
Freecol-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freecol-developers