MapView.java :  » Game » joverseer » org » joverseer » ui » views » Java Open Source

Java Open Source » Game » joverseer 
joverseer » org » joverseer » ui » views » MapView.java
package org.joverseer.ui.views;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JScrollPane;

import org.joverseer.ui.LifecycleEventsEnum;
import org.joverseer.ui.map.MapMetadata;
import org.joverseer.ui.map.MapPanel;
import org.joverseer.ui.support.JOverseerEvent;
import org.joverseer.ui.viewers.PopulationCenterViewer;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.richclient.application.Application;
import org.springframework.richclient.application.support.AbstractView;
import org.springframework.richclient.layout.TableLayoutBuilder;

public class MapView extends AbstractView implements ApplicationListener {

  MapPanel mapPanel;
  PopulationCenterViewer pcViewer;
  JScrollPane scp;

  /**
   * Create the actual UI control for this view. It will be placed into the
   * window according to the layout of the page holding this view.
   */
  @Override
  protected JComponent createControl() {
    // In this view, we're just going to use standard Swing to place a
    // few controls.
    scp = new JScrollPane(mapPanel = new MapPanel());
    mapPanel.setFocusable(true);
    mapPanel.addKeyListener(new KeyListener() {

      public void keyPressed(KeyEvent arg0) {
        if (arg0.getKeyCode() == KeyEvent.VK_UP) {
          scp.getVerticalScrollBar().setValue(scp.getVerticalScrollBar().getValue() - scp.getVerticalScrollBar().getBlockIncrement());
        }
        if (arg0.getKeyCode() == KeyEvent.VK_DOWN) {
          scp.getVerticalScrollBar().setValue(scp.getVerticalScrollBar().getValue() + scp.getVerticalScrollBar().getBlockIncrement());
        }
        if (arg0.getKeyCode() == KeyEvent.VK_LEFT) {
          scp.getHorizontalScrollBar().setValue(scp.getHorizontalScrollBar().getValue() - scp.getHorizontalScrollBar().getBlockIncrement());
        }
        if (arg0.getKeyCode() == KeyEvent.VK_RIGHT) {
          scp.getHorizontalScrollBar().setValue(scp.getHorizontalScrollBar().getValue() + scp.getHorizontalScrollBar().getBlockIncrement());
        }

      }

      public void keyReleased(KeyEvent arg0) {
        // TODO Auto-generated method stub

      }

      public void keyTyped(KeyEvent arg0) {
        // TODO Auto-generated method stub

      }

    });
    mapPanel.setPreferredSize(new Dimension(3500, 2500));
    mapPanel.setBackground(Color.white);
    scp.setPreferredSize(new Dimension(800, 500));
    MapMetadata mm = (MapMetadata) Application.instance().getApplicationContext().getBean("mapMetadata");
    scp.getVerticalScrollBar().setUnitIncrement(mm.getGridCellHeight() * mm.getHexSize() * 2);
    scp.getHorizontalScrollBar().setUnitIncrement(mm.getGridCellWidth() * mm.getHexSize() * 2);

    TableLayoutBuilder tlb = new TableLayoutBuilder();
    tlb.cell(new JLabel("New game"));
    return scp;
  }

  public MapPanel getMapPanel() {
    return mapPanel;
  }

  public void onApplicationEvent(ApplicationEvent applicationEvent) {
    if (applicationEvent instanceof JOverseerEvent) {
      JOverseerEvent e = (JOverseerEvent) applicationEvent;
      if (e.getEventType().equals(LifecycleEventsEnum.GameChangedEvent.toString())) {
        mapPanel.invalidateAll();
        mapPanel.updateUI();
      } else if (e.getEventType().equals(LifecycleEventsEnum.SelectedHexChangedEvent.toString())) {
        if (e.getSender() != mapPanel) {
          Point p = (Point) e.getObject();
          mapPanel.setSelectedHex(p);
          Rectangle shr = mapPanel.getSelectedHexRectangle();
          mapPanel.updateUI();
          // expand shr
          Rectangle vr = mapPanel.getVisibleRect();

          vr.x = shr.x - (vr.width - shr.width) / 2;
          vr.y = shr.y - (vr.height - shr.height) / 2;
          mapPanel.scrollRectToVisible(vr);
        }
      } else if (e.getEventType().equals(LifecycleEventsEnum.SelectedTurnChangedEvent.toString())) {
        mapPanel.invalidateAll();
        mapPanel.updateUI();
      } else if (e.getEventType().equals(LifecycleEventsEnum.RefreshTurnMapItems.toString())) {
        mapPanel.invalidateAll();
        mapPanel.updateUI();
      } else if (e.getEventType().equals(LifecycleEventsEnum.RefreshMapItems.toString())) {
        // refreshAutoArmyRangeMapItems(null);
        mapPanel.invalidateMapItems();
        mapPanel.updateUI();
      } else if (e.getEventType().equals(LifecycleEventsEnum.OrderChangedEvent.toString())) {
        mapPanel.invalidateMapItems();
        mapPanel.updateUI();
      } else if (e.getEventType().equals(LifecycleEventsEnum.MapMetadataChangedEvent.toString())) {
        MapMetadata mm = (MapMetadata) Application.instance().getApplicationContext().getBean("mapMetadata");
        mapPanel.setPreferredSize(new Dimension(mm.getGridCellWidth() * mm.getHexSize() * (mm.getMaxMapColumn() + 1), mm.getGridCellHeight() * mm.getHexSize() * mm.getMaxMapRow()));
        scp.getVerticalScrollBar().setUnitIncrement(mm.getGridCellHeight() * mm.getHexSize() * 2);
        scp.getHorizontalScrollBar().setUnitIncrement(mm.getGridCellWidth() * mm.getHexSize() * 2);
        mapPanel.invalidateAndReset();
        mapPanel.updateUI();
        scp.updateUI();
      }

    }
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.