arcgissamples\globe\LoadAndPlayApplication.java
/* Copyright 2010 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. * */ package arcgissamples.globe; import java.awt.BorderLayout; import java.io.File; import javax.swing.JDesktopPane; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.SwingUtilities; import javax.swing.UIManager; import com.esri.arcgis.beans.globe.GlobeBean; import com.esri.arcgis.beans.toolbar.ToolbarBean; import com.esri.arcgis.controls.ControlsGlobeGlobeToolbar; import com.esri.arcgis.controls.ControlsGlobeOpenDocCommand; import com.esri.arcgis.system.AoInitialize; import com.esri.arcgis.system.EngineInitializer; import com.esri.arcgis.system.esriLicenseExtensionCode; import com.esri.arcgis.system.esriLicenseProductCode; import com.esri.arcgis.system.esriLicenseStatus; import com.esri.arcgis.systemUI.esriCommandStyles; public class LoadAndPlayApplication extends JFrame { public static void main(String[] args) throws Exception { // TODO: Add the .aga file in .NET devkit to java // initialize the interop initializeInterop(); // initialize to a license level initializeArcGISLicenses(); UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); // start the sample final LoadAndPlayApplication thisClass = new LoadAndPlayApplication(); thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); thisClass.setContentPane(new JDesktopPane()); SwingUtilities.invokeLater(new Runnable() { public void run() { thisClass.initializeUI(); thisClass.setVisible(true); thisClass.getProgressDialog().setVisible(true); Thread documentLoader = new Thread(new Runnable() { public void run() { try { //Get DEVKITHOME Home String devKitHome = System.getenv("AGSDEVKITJAVA"); thisClass.getGlobeBean().load3dFile(devKitHome + "java" + File.separator + "samples" + File.separator + "data" + File.separator + "globe_data" + File.separator + "Default_Document.3dd"); thisClass.getProgressDialog().setVisible(false); } catch (java.lang.Throwable e) { e.printStackTrace(); } } }, " Globe document loader"); documentLoader.start(); } }); } private void initializeUI() { this.setSize(700, 700); this.setContentPane(getJContentPane()); this.setTitle("Globe Animation"); } private JPanel getJContentPane() { if (jContentPane == null) { jContentPane = new JPanel(); jContentPane.setLayout(new BorderLayout()); jContentPane.add(getGlobeBean(), BorderLayout.CENTER); jContentPane.add(getToolbar(), BorderLayout.NORTH); jContentPane.add(getAnimationPanel(), BorderLayout.SOUTH); } return jContentPane; } private AnimationPanel getAnimationPanel() { if (animationPanel == null) { animationPanel = new AnimationPanel(); try { AnimationPanelActionListener listener = new AnimationPanelActionListener( animationPanel, getGlobeBean()); animationPanel.getBtnPlay().addActionListener(listener); animationPanel.getBtnLoad().addActionListener(listener); } catch (Exception e) { e.printStackTrace(); } } return animationPanel; } private GlobeBean getGlobeBean() { if (globe == null) { try { globe = new GlobeBean(); } catch (java.lang.Throwable e) { e.printStackTrace(); } } return globe; } private ToolbarBean getToolbar() { if (toolbar == null) { try { toolbar = new ToolbarBean(); toolbar.setBuddyControl(getGlobeBean()); toolbar.addItem(ControlsGlobeOpenDocCommand.getClsid(), 0, 0, false, 0, esriCommandStyles.esriCommandStyleIconOnly); toolbar.addItem(ControlsGlobeGlobeToolbar.getClsid(), 0, 1, false, 0, esriCommandStyles.esriCommandStyleIconOnly); } catch (java.lang.Throwable e) { e.printStackTrace(); } } return toolbar; } private JDialog getProgressDialog() { if (progressDialog == null) { progressDialog = new JDialog(); progressDialog.setTitle("Loading..."); JProgressBar bar = new JProgressBar(); bar.setBorderPainted(true); bar.setIndeterminate(true); progressDialog.setLocationRelativeTo(this); progressDialog.setLocation(this.getWidth() / 2, this.getHeight() / 2); progressDialog.add(bar, BorderLayout.PAGE_START); progressDialog.pack(); } return progressDialog; } 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.esriLicenseProductCodeArcView) == esriLicenseStatus.esriLicenseAvailable) ao.initialize(esriLicenseProductCode.esriLicenseProductCodeArcView); else { System.err.println("Could not initialize an Engine or ArcView license. Exiting application."); System.exit(-1); } ao.checkOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst); } catch (Exception e) { e.printStackTrace(); } } private static final long serialVersionUID = 1L; private JPanel jContentPane = null; private GlobeBean globe = null; private ToolbarBean toolbar = null; private AnimationPanel animationPanel = null; private JDialog progressDialog = null; } // @jve:decl-index=0:visual-constraint="62,37"