arcgissamples\display\CompassApplication.java—ArcObjects 10.4 Help for Java | ArcGIS for Desktop
Dynamic compass using OpenGL
arcgissamples\display\CompassApplication.java
/* Copyright 2015 ESRI
* 
* All rights reserved under the copyright laws of the United States
* and applicable international laws, treaties, and conventions.
* 
* You may freely redistribute and use this sample code, with or
* without modification, provided you include the original copyright
* notice and use restrictions.
* 
* See the use restrictions at <your ArcGIS install location>/DeveloperKit10.4/userestrictions.txt.
* 
*/
package arcgissamples.display;

import java.awt.BorderLayout;
import java.awt.Rectangle;
import java.io.File;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

import com.esri.arcgis.beans.map.MapBean;
import com.esri.arcgis.beans.toolbar.ToolbarBean;
import com.esri.arcgis.controls.ControlsMapRoamTool;
import com.esri.arcgis.controls.ControlsMapRotateTool;
import com.esri.arcgis.controls.ControlsMapZoomPanTool;
import com.esri.arcgis.system.AoInitialize;
import com.esri.arcgis.system.EngineInitializer;
import com.esri.arcgis.system.esriLicenseProductCode;
import com.esri.arcgis.system.esriLicenseStatus;
import com.esri.arcgis.systemUI.esriCommandStyles;

public class CompassApplication extends JFrame {

    private static final long serialVersionUID = 1L;


    public static void main(String[] args) {
  //initialize the interop
  initializeInterop();
  //initialize to a license level
  initializeArcGISLicenses();
  //start the sample
  final CompassApplication thisClass = new CompassApplication();
  thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  SwingUtilities.invokeLater(new Runnable() {
      public void run() {
    thisClass.initializeUI();
    thisClass.setVisible(true);
      }
  });
    }

    private void initializeUI() {
  this.setContentPane(getJContentPane());
  this.setTitle("Dynamic Compass Sample");
  this.setBounds(new Rectangle(0, 0, 600, 500));
    }

    private JPanel jContentPane = null;

    private JPanel getJContentPane() {
  if (jContentPane == null) {
      jContentPane = new JPanel();
      jContentPane.setLayout(new BorderLayout());
      jContentPane.add(getMap(), BorderLayout.CENTER);
      jContentPane.add(getToolbar(), BorderLayout.NORTH);
  }
  return jContentPane;
    }

    private MapBean map = null;

    private MapBean getMap() {
  if (map == null) {
      try {
    map = new MapBean();
    //Get DEVKITHOME Home
    String devKitHome = System.getenv("AGSDEVKITJAVA");
    map.loadMxFile(devKitHome + "java" + File.separator +
                  "samples" + File.separator +
                  "data" + File.separator + 
                  "mxds" + File.separator + 
                  "brazil.mxd",
        null, null);
      } catch (java.lang.Throwable e) {
    e.printStackTrace();
      }
  }
  return map;
    }

    private ToolbarBean toolbar = null;

    private ToolbarBean getToolbar() {
  if (toolbar == null) {
      try {
    toolbar = new ToolbarBean();
    toolbar.addItem(new ShowCompassCommand(), 0, 0, false, 0,
        esriCommandStyles.esriCommandStyleIconAndText);
    toolbar.addItem(new ControlsMapRotateTool(), 0, 1, false, 0,
        esriCommandStyles.esriCommandStyleIconAndText);
    toolbar.addItem(new ControlsMapZoomPanTool(), 0, 2, false, 0,
        esriCommandStyles.esriCommandStyleIconAndText);
    toolbar.addItem(new ControlsMapRoamTool(), 0, 3, false, 0,
        esriCommandStyles.esriCommandStyleIconAndText);

    toolbar.setBuddyControl(getMap());
      } catch (java.lang.Throwable e) {
    e.printStackTrace();
      }
  }
  return toolbar;
    }

    static void initializeInterop() {
  //Visual beans mode required for multi-threaded applciations like Swing.
  EngineInitializer.initializeVisualBeans();
    }

    static void initializeArcGISLicenses() {
  try {
      AoInitialize ao = new AoInitialize();
      if (ao.isProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeEngine) == esriLicenseStatus.esriLicenseAvailable)
    ao.initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);
      else if (ao.isProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeBasic) == esriLicenseStatus.esriLicenseAvailable)
    ao.initialize(esriLicenseProductCode.esriLicenseProductCodeBasic);
      else{
    System.err.println("Could not initialize an Engine or Basic License. Exiting application.");
        System.exit(-1);
      }
  } catch (Exception e) {
      e.printStackTrace();
  }
    }
}