Omaha #3612 Refactored AbstractCAVEComponent to extend CAVEApplication

Change-Id: Iccaa6d95ec47fa41080929e456ff450eb61f41eb

Former-commit-id: 3ea9b1b4be [formerly 154c4ac7131ae8f533d4080055d9afe257bf0506]
Former-commit-id: 994605c1ce
This commit is contained in:
Max Schenkelberg 2014-09-10 15:43:19 -05:00
parent aed4031560
commit 3b1a3f84fd
10 changed files with 253 additions and 458 deletions

View file

@ -52,7 +52,7 @@ import com.raytheon.uf.viz.thinclient.localization.LocalizationCachePersistence;
import com.raytheon.uf.viz.thinclient.localization.ThinClientLocalizationInitializer;
import com.raytheon.uf.viz.thinclient.preferences.ThinClientPreferenceConstants;
import com.raytheon.uf.viz.thinclient.refresh.TimedRefresher;
import com.raytheon.viz.ui.personalities.awips.AbstractCAVEComponent;
import com.raytheon.viz.ui.personalities.awips.AbstractAWIPSComponent;
import com.raytheon.viz.ui.personalities.awips.CAVE;
/**
@ -76,7 +76,7 @@ import com.raytheon.viz.ui.personalities.awips.CAVE;
public class ThinClientComponent extends CAVE implements IThinClientComponent {
private static final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(AbstractCAVEComponent.class, "ThinClient");
.getHandler(AbstractAWIPSComponent.class, "ThinClient");
private ThinClientCacheManager cacheManager;
@ -152,15 +152,21 @@ public class ThinClientComponent extends CAVE implements IThinClientComponent {
.getUnderlyingFactory()));
}
/*
* (non-Javadoc)
*
* @see com.raytheon.viz.ui.personalities.awips.AbstractCAVEComponent#
* initializeLocalization()
*/
@Override
protected void initializeLocalization(boolean nonui) {
protected void initializeLocalization() throws Exception {
cacheManager = new ThinClientCacheManager(
new GeometryCachePersistence(),
new LocalizationCachePersistence(),
new MapQueryCachePersistence());
cacheManager.restoreCaches();
try {
new ThinClientLocalizationInitializer(!nonui,
new ThinClientLocalizationInitializer(!isNonUIComponent(),
!LocalizationManager.internalAlertServer).run();
} catch (Exception e1) {
e1.printStackTrace();

View file

@ -23,7 +23,7 @@ import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import com.raytheon.viz.gfe.dialogs.sbu.SiteActivationDlg;
import com.raytheon.viz.ui.personalities.awips.AbstractCAVEComponent;
import com.raytheon.viz.ui.personalities.awips.AbstractAWIPSComponent;
/**
* Display Activate Site dialog standalone and blocked.
@ -43,7 +43,7 @@ import com.raytheon.viz.ui.personalities.awips.AbstractCAVEComponent;
* @version 1.0
*/
public class ActivateSiteComponent extends AbstractCAVEComponent {
public class ActivateSiteComponent extends AbstractAWIPSComponent {
/*
* (non-Javadoc)

View file

@ -41,7 +41,7 @@ import com.raytheon.uf.common.time.util.TimeUtil;
import com.raytheon.uf.common.util.FileUtil;
import com.raytheon.uf.viz.core.VizApp;
import com.raytheon.viz.gfe.python.GfeCavePyIncludeUtil;
import com.raytheon.viz.ui.personalities.awips.AbstractCAVEComponent;
import com.raytheon.viz.ui.personalities.awips.AbstractAWIPSComponent;
/**
* GFE Client application component
@ -69,7 +69,7 @@ import com.raytheon.viz.ui.personalities.awips.AbstractCAVEComponent;
* @version 1.0
*/
public class GfeClient extends AbstractCAVEComponent {
public class GfeClient extends AbstractAWIPSComponent {
private static final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(GfeClient.class);

View file

@ -20,7 +20,7 @@
package com.raytheon.viz.gfe;
import com.raytheon.viz.gfe.dialogs.sbu.ServiceBackupDlg;
import com.raytheon.viz.ui.personalities.awips.AbstractCAVEComponent;
import com.raytheon.viz.ui.personalities.awips.AbstractAWIPSComponent;
/**
* Bring up the Service Backup Dialog in stand alone mode as a blocking dialog.
@ -43,7 +43,7 @@ import com.raytheon.viz.ui.personalities.awips.AbstractCAVEComponent;
* @version 1.0
*/
public class ServiceBackupComponent extends AbstractCAVEComponent {
public class ServiceBackupComponent extends AbstractAWIPSComponent {
/*
* (non-Javadoc)

View file

@ -24,7 +24,7 @@ import java.util.ArrayList;
import org.eclipse.core.runtime.Platform;
import com.raytheon.viz.mpe.util.AutoDailyQC;
import com.raytheon.viz.ui.personalities.awips.AbstractCAVEComponent;
import com.raytheon.viz.ui.personalities.awips.AbstractAWIPSComponent;
/**
* TODO Add Description
@ -43,7 +43,7 @@ import com.raytheon.viz.ui.personalities.awips.AbstractCAVEComponent;
* @version 1.0
*/
public class StartAutoDQC extends AbstractCAVEComponent {
public class StartAutoDQC extends AbstractAWIPSComponent {
/*
* (non-Javadoc)

View file

@ -0,0 +1,231 @@
/**
* This software was developed and / or modified by Raytheon Company,
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
*
* U.S. EXPORT CONTROLLED TECHNICAL DATA
* This software product contains export-restricted data whose
* export/transfer/disclosure is restricted by U.S. law. Dissemination
* to non-U.S. persons whether in the United States or abroad requires
* an export license or other authorization.
*
* Contractor Name: Raytheon Company
* Contractor Address: 6825 Pine Street, Suite 340
* Mail Stop B8
* Omaha, NE 68106
* 402.291.0100
*
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
**/
package com.raytheon.viz.ui.personalities.awips;
import org.eclipse.core.runtime.ILogListener;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.application.WorkbenchAdvisor;
import org.eclipse.ui.statushandlers.StatusAdapter;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.viz.alertviz.SystemStatusHandler;
import com.raytheon.uf.viz.alertviz.ui.dialogs.AlertVisualization;
import com.raytheon.uf.viz.core.localization.LocalizationConstants;
import com.raytheon.uf.viz.core.localization.LocalizationManager;
import com.raytheon.uf.viz.personalities.cave.component.CAVEApplication;
/**
* Abstract CAVE component
*
* <pre>
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------- -------- ----------- -----------------------------------------
* Apr 28, 2011 mschenke Initial creation
* May 16, 2012 636 dgilling Ensure exception is thrown and CAVE
* immediately exits if connection cannot be
* made to localization server.
* May 31, 2012 674 dgilling Allow SimulatedTime to be set from the
* command line.
* Oct 02, 2012 1236 dgilling Allow SimulatedTime to be set from the
* command line even if practice mode is
* off.
* Jan 09, 2013 1442 rferrel Changes to notify SimultedTime listeners.
* Apr 17, 2013 1786 mpduff startComponent now sets
* StatusHandlerFactory
* Apr 23, 2013 1939 randerso Allow serialization to complete
* initialization before connecting to JMS
* to avoid deadlock
* May 23, 2013 2005 njensen Shutdown on spring initialization errors
* Oct 15, 2013 2361 njensen Added startupTimer
* Nov 14, 2013 2361 njensen Removed initializing serialization at
* startup
* Dec 10, 2013 2602 bsteffen Start loading ProcedureXmlManager in
* startComponent.
* Aug 26, 2014 3356 njensen Explicitly set localization adapter
* Sep 10, 2014 3612 mschenke Refactored to extend CAVEApplication
*
* </pre>
*
* @author mschenke
* @version 1.0
*/
public abstract class AbstractAWIPSComponent extends CAVEApplication {
public static final int NON_UI = 1 << 1;
public static final int ALERT_VIZ = 1 << 2;
public static final int WORKBENCH = 1 << 3;
private AlertVisualization alertViz = null;
/*
* (non-Javadoc)
*
* @see
* com.raytheon.uf.viz.personalities.cave.component.CAVEApplication#cleanup
* ()
*/
@Override
protected void cleanup() throws Exception {
super.cleanup();
if (this.alertViz != null) {
this.alertViz.dispose();
}
}
/*
* (non-Javadoc)
*
* @see com.raytheon.uf.viz.personalities.cave.component.CAVEApplication#
* getEclipseLogListener()
*/
@Override
protected ILogListener getEclipseLogListener() {
return new ILogListener() {
@Override
public void logging(IStatus status, String plugin) {
if (PlatformUI.isWorkbenchRunning() == false) {
new SystemStatusHandler().handle(new StatusAdapter(status),
0);
}
}
};
}
/*
* (non-Javadoc)
*
* @see com.raytheon.uf.viz.personalities.cave.component.CAVEApplication#
* getWorkbenchAdvisor()
*/
@Override
protected WorkbenchAdvisor getWorkbenchAdvisor() {
WorkbenchAdvisor workbenchAdvisor = null;
if ((getRuntimeModes() & WORKBENCH) != 0) {
workbenchAdvisor = new AWIPSWorkbenchAdvisor();
} else if (!isNonUIComponent()) {
workbenchAdvisor = new HiddenWorkbenchAdvisor(getComponentName(),
this);
}
if (workbenchAdvisor instanceof HiddenWorkbenchAdvisor == false) {
try {
startInternal(getComponentName());
} catch (Exception e) {
throw new RuntimeException("Error initializing component", e);
}
}
return workbenchAdvisor;
}
/*
* (non-Javadoc)
*
* @see com.raytheon.uf.viz.personalities.cave.component.CAVEApplication#
* isNonUIComponent()
*/
@Override
protected boolean isNonUIComponent() {
return (getRuntimeModes() & NON_UI) != 0;
}
/**
* Internal start method for subclasses. For components that do not use the
* Workbench, when this method returns, the application will exit. For
* components that do use the workbench, this method can be used to
* initialize component specific things before the workbench is opened
*
* @param componentName
* @throws Exception
*/
protected abstract void startInternal(String componentName)
throws Exception;
/**
* Get the modes to run with
*
* @return
*/
protected abstract int getRuntimeModes();
/*
* (non-Javadoc)
*
* @see com.raytheon.uf.viz.personalities.cave.component.CAVEApplication#
* initializeLocalization()
*/
@Override
protected void initializeLocalization() throws Exception {
initializeLocalization(!isNonUIComponent(),
!LocalizationManager.internalAlertServer);
}
/*
* (non-Javadoc)
*
* @see com.raytheon.uf.viz.personalities.cave.component.CAVEApplication#
* initializeObservers()
*/
@Override
protected void initializeObservers() {
super.initializeObservers();
// Setup AlertViz observer
if ((getRuntimeModes() & ALERT_VIZ) != 0) {
// Set up alertviz
if (LocalizationManager.internalAlertServer && !isNonUIComponent()) {
com.raytheon.uf.viz.alertviz.AlertvizJob as = new com.raytheon.uf.viz.alertviz.AlertvizJob(
61998);
if (as.isAlreadyStarted() == false) {
// only run alert visualization inside viz if the server
// is running, otherwise it is running as a separate pid
try {
this.alertViz = new AlertVisualization(false,
getApplicationDisplay());
} catch (RuntimeException e) {
e.printStackTrace();
String err = "Error starting alert visualization.";
statusHandler.handle(Priority.PROBLEM, err, e);
}
}
} else {
try {
new com.raytheon.uf.viz.alertviz.AlertvizJob(
LocalizationManager
.getInstance()
.getLocalizationStore()
.getString(
LocalizationConstants.P_ALERT_SERVER),
!isNonUIComponent());
} catch (Exception e) {
throw new RuntimeException("Error starting AlertVizJob", e);
}
}
}
}
}

View file

@ -1,442 +0,0 @@
/**
* This software was developed and / or modified by Raytheon Company,
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
*
* U.S. EXPORT CONTROLLED TECHNICAL DATA
* This software product contains export-restricted data whose
* export/transfer/disclosure is restricted by U.S. law. Dissemination
* to non-U.S. persons whether in the United States or abroad requires
* an export license or other authorization.
*
* Contractor Name: Raytheon Company
* Contractor Address: 6825 Pine Street, Suite 340
* Mail Stop B8
* Omaha, NE 68106
* 402.291.0100
*
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
**/
package com.raytheon.viz.ui.personalities.awips;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import org.eclipse.core.internal.runtime.InternalPlatform;
import org.eclipse.core.runtime.ILogListener;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.equinox.app.IApplication;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.application.WorkbenchAdvisor;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.eclipse.ui.statushandlers.StatusAdapter;
import com.raytheon.uf.common.datastorage.DataStoreFactory;
import com.raytheon.uf.common.localization.PathManagerFactory;
import com.raytheon.uf.common.pypies.PyPiesDataStoreFactory;
import com.raytheon.uf.common.pypies.PypiesProperties;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.common.time.SimulatedTime;
import com.raytheon.uf.common.time.util.ITimer;
import com.raytheon.uf.common.time.util.TimeUtil;
import com.raytheon.uf.viz.alertviz.SystemStatusHandler;
import com.raytheon.uf.viz.alertviz.ui.dialogs.AlertVisualization;
import com.raytheon.uf.viz.application.component.IStandaloneComponent;
import com.raytheon.uf.viz.core.ProgramArguments;
import com.raytheon.uf.viz.core.RecordFactory;
import com.raytheon.uf.viz.core.VizApp;
import com.raytheon.uf.viz.core.localization.CAVELocalizationAdapter;
import com.raytheon.uf.viz.core.localization.CAVELocalizationNotificationObserver;
import com.raytheon.uf.viz.core.localization.LocalizationConstants;
import com.raytheon.uf.viz.core.localization.LocalizationInitializer;
import com.raytheon.uf.viz.core.localization.LocalizationManager;
import com.raytheon.uf.viz.core.notification.jobs.NotificationManagerJob;
import com.raytheon.uf.viz.core.procedures.ProcedureXmlManager;
import com.raytheon.uf.viz.core.status.VizStatusHandlerFactory;
import com.raytheon.uf.viz.personalities.cave.workbench.VizWorkbenchAdvisor;
import com.raytheon.viz.alerts.jobs.AutoUpdater;
import com.raytheon.viz.alerts.jobs.MenuUpdater;
import com.raytheon.viz.alerts.observers.ProductAlertObserver;
import com.raytheon.viz.core.CorePlugin;
import com.raytheon.viz.core.mode.CAVEMode;
import com.raytheon.viz.core.preferences.PreferenceConstants;
import com.raytheon.viz.core.units.UnitRegistrar;
/**
* Abstract CAVE component
*
* <pre>
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------- -------- ----------- -----------------------------------------
* Apr 28, 2011 mschenke Initial creation
* May 16, 2012 636 dgilling Ensure exception is thrown and CAVE
* immediately exits if connection cannot be
* made to localization server.
* May 31, 2012 674 dgilling Allow SimulatedTime to be set from the
* command line.
* Oct 02, 2012 1236 dgilling Allow SimulatedTime to be set from the
* command line even if practice mode is
* off.
* Jan 09, 2013 1442 rferrel Changes to notify SimultedTime listeners.
* Apr 17, 2013 1786 mpduff startComponent now sets
* StatusHandlerFactory
* Apr 23, 2013 1939 randerso Allow serialization to complete
* initialization before connecting to JMS
* to avoid deadlock
* May 23, 2013 2005 njensen Shutdown on spring initialization errors
* Oct 15, 2013 2361 njensen Added startupTimer
* Nov 14, 2013 2361 njensen Removed initializing serialization at
* startup
* Dec 10, 2013 2602 bsteffen Start loading ProcedureXmlManager in
* startComponent.
* Aug 26, 2014 3356 njensen Explicitly set localization adapter
*
* </pre>
*
* @author mschenke
* @version 1.0
*/
public abstract class AbstractCAVEComponent implements IStandaloneComponent {
public static final int NON_UI = 1 << 1;
public static final int ALERT_VIZ = 1 << 2;
public static final int WORKBENCH = 1 << 3;
private static final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(AbstractCAVEComponent.class, "CAVE");
/*
* (non-Javadoc)
*
* @see
* com.raytheon.viz.ui.personalities.viz.component.IStandaloneComponent#
* startComponent(java.lang.String)
*/
@SuppressWarnings("restriction")
@Override
public final Object startComponent(String componentName) throws Exception {
ITimer startupTimer = TimeUtil.getTimer();
startupTimer.start();
// This is a workaround to receive status messages because without the
// PlatformUI initialized Eclipse throws out the status
// messages. Once PlatformUI has started, the status handler
// will take over.
InternalPlatform.getDefault()
.getLog(WorkbenchPlugin.getDefault().getBundle())
.addLogListener(new ILogListener() {
@Override
public void logging(IStatus status, String plugin) {
if (PlatformUI.isWorkbenchRunning() == false) {
new SystemStatusHandler().handle(new StatusAdapter(
status), 0);
}
}
});
UnitRegistrar.registerUnits();
CAVEMode.performStartupDuties();
ITimer timer = TimeUtil.getTimer();
timer.start();
Display display = null;
int modes = getRuntimeModes();
boolean alertviz = (modes & ALERT_VIZ) != 0;
boolean cave = (modes & WORKBENCH) != 0;
boolean nonui = (modes & NON_UI) != 0;
if (!nonui) {
display = PlatformUI.createDisplay();
} else {
display = new Display();
}
// verify Spring successfully initialized, otherwise stop CAVE
if (!com.raytheon.uf.viz.spring.dm.Activator.getDefault()
.isSpringInitSuccessful()) {
String msg = "CAVE's Spring container did not initialize correctly and CAVE must shut down.";
boolean restart = false;
if (!nonui) {
msg += " Attempt to restart CAVE?";
restart = MessageDialog.openQuestion(new Shell(display),
"Startup Error", msg);
} else {
System.err.println(msg);
}
if (restart) {
return IApplication.EXIT_RESTART;
}
return IApplication.EXIT_OK;
}
try {
initializeLocalization(nonui);
} catch (Exception e) {
e.printStackTrace();
statusHandler.handle(
Priority.CRITICAL,
"Could not connect to localization server: "
+ e.getLocalizedMessage(), e);
// we return EXIT_OK here so eclipse doesn't try to pop up an error
// dialog which would break gfeClient-based cron jobs.
return IApplication.EXIT_OK;
}
UFStatus.setHandlerFactory(new VizStatusHandlerFactory());
initializeDataStoreFactory();
initializeObservers();
int returnCode = IApplication.EXIT_OK;
AlertVisualization av = null;
if (alertviz) {
// Set up alertviz
if (LocalizationManager.internalAlertServer && !nonui) {
com.raytheon.uf.viz.alertviz.AlertvizJob as = new com.raytheon.uf.viz.alertviz.AlertvizJob(
61998);
if (as.isAlreadyStarted() == false) {
// only run alert visualization inside viz if the server
// is running, otherwise it is running as a separate pid
try {
av = new AlertVisualization(false, display);
} catch (RuntimeException e) {
e.printStackTrace();
String err = "Error starting alert visualization.";
statusHandler.handle(Priority.PROBLEM, err, e);
}
}
} else {
new com.raytheon.uf.viz.alertviz.AlertvizJob(
LocalizationManager
.getInstance()
.getLocalizationStore()
.getString(LocalizationConstants.P_ALERT_SERVER),
!nonui);
}
}
WorkbenchAdvisor workbenchAdvisor = null;
// A component was passed as command line arg
// launch cave normally, should cave be registered as component?
try {
initializeSimulatedTime();
// open JMS connection to allow alerts to be received
NotificationManagerJob.connect();
timer.stop();
System.out.println("Internal initialization time: "
+ timer.getElapsedTime() + " ms");
if (cave) {
workbenchAdvisor = getWorkbenchAdvisor();
if (workbenchAdvisor instanceof VizWorkbenchAdvisor) {
((VizWorkbenchAdvisor) workbenchAdvisor)
.setStartupTimer(startupTimer);
}
} else if (!nonui) {
workbenchAdvisor = new HiddenWorkbenchAdvisor(componentName,
this);
}
if (workbenchAdvisor instanceof HiddenWorkbenchAdvisor == false) {
startInternal(componentName);
}
ProcedureXmlManager.inititializeAsync();
if (workbenchAdvisor != null) {
returnCode = PlatformUI.createAndRunWorkbench(display,
workbenchAdvisor);
}
} catch (Throwable t) {
t.printStackTrace();
MessageDialog
.openError(
null,
"Error!", "Error instantiating workbench: " + t.getMessage()); //$NON-NLS-1$" +
} finally {
try {
if (CAVEMode.getMode() == CAVEMode.PRACTICE) {
saveUserTime();
}
} catch (RuntimeException e) {
// catch any exceptions to ensure rest of finally block
// executes
}
try {
// disconnect from JMS
NotificationManagerJob.disconnect();
} catch (RuntimeException e) {
// catch any exceptions to ensure rest of finally block
// executes
}
if (av != null) {
av.dispose();
}
if (display != null) {
display.dispose();
}
}
if (returnCode == PlatformUI.RETURN_RESTART) {
return IApplication.EXIT_RESTART;
}
return IApplication.EXIT_OK;
}
/**
* Get the workbench advisor for the application
*
* @return
*/
protected WorkbenchAdvisor getWorkbenchAdvisor() {
return new AWIPSWorkbenchAdvisor();
}
/**
* Save the current state of SimulatedTime
*
* @throws IOException
*/
private void saveUserTime() throws IOException {
/*
* Save the current workstation time
*/
long timeValue = 0;
if (!SimulatedTime.getSystemTime().isRealTime()) {
timeValue = SimulatedTime.getSystemTime().getTime().getTime();
}
CorePlugin.getDefault().getPreferenceStore()
.setValue(PreferenceConstants.P_LAST_USER_TIME, timeValue);
CorePlugin
.getDefault()
.getPreferenceStore()
.setValue(PreferenceConstants.P_LAST_USER_TIME_FROZEN,
SimulatedTime.getSystemTime().isFrozen());
CorePlugin.getDefault().getPreferenceStore().save();
}
/**
* Restore the prior state of SimulatedTime
*/
private void initializeSimulatedTime() {
long timeValue = 0;
boolean isFrozen = false;
// If CorePlugin.getDefault() == null, assume running from a unit test
if (CorePlugin.getDefault() != null) {
String dateString = ProgramArguments.getInstance().getString(
"-time");
if (dateString != null && !dateString.isEmpty()) {
try {
DateFormat dateParser = new SimpleDateFormat(
"yyyyMMdd_HHmm");
dateParser.setTimeZone(TimeZone.getTimeZone("GMT"));
Date newSimTime = dateParser.parse(dateString);
timeValue = newSimTime.getTime();
} catch (ParseException e) {
statusHandler
.handle(Priority.WARN,
"Invalid argument specified for command-line parameter '-time'.",
e);
}
}
}
// if we're in practice mode and the user did not specify a DRT value on
// the CLI, restore their previous time setting
if ((CAVEMode.getMode() == CAVEMode.PRACTICE) && (timeValue == 0)) {
// Get the last saved time from the localization settings
timeValue = CorePlugin.getDefault().getPreferenceStore()
.getLong(PreferenceConstants.P_LAST_USER_TIME);
// Get if the last saved time was a frozen modified time
isFrozen = CorePlugin.getDefault().getPreferenceStore()
.getBoolean(PreferenceConstants.P_LAST_USER_TIME_FROZEN);
}
SimulatedTime systemTime = SimulatedTime.getSystemTime();
systemTime.notifyListeners(false);
systemTime.setRealTime();
systemTime.setFrozen(isFrozen);
if (timeValue != 0) {
systemTime.setTime(new Date(timeValue));
}
systemTime.notifyListeners(true);
}
/**
* Internal start method for subclasses. For components that do not use the
* Workbench, when this method returns, the application will exit. For
* components that do use the workbench, this method can be used to
* initialize component specific things before the workbench is opened
*
* @param componentName
* @throws Exception
*/
protected abstract void startInternal(String componentName)
throws Exception;
/**
* Get the modes to run with
*
* @return
*/
protected abstract int getRuntimeModes();
/**
* Initializes the DataStoreFactory for the component.
*/
protected void initializeDataStoreFactory() {
PypiesProperties pypiesProps = new PypiesProperties();
pypiesProps.setAddress(VizApp.getPypiesServer());
DataStoreFactory.getInstance().setUnderlyingFactory(
new PyPiesDataStoreFactory(pypiesProps));
}
protected void initializeLocalization(boolean nonui) throws Exception {
PathManagerFactory.setAdapter(new CAVELocalizationAdapter());
new LocalizationInitializer(!nonui,
!LocalizationManager.internalAlertServer).run();
}
/**
* Initialize any observers needed by the application
*/
protected void initializeObservers() {
// Setup cave notification observer
CAVELocalizationNotificationObserver.register();
registerProductAlerts();
}
protected void registerProductAlerts() {
// Register product observers
ProductAlertObserver.addObserver(null, new MenuUpdater());
for (String plugin : RecordFactory.getInstance().getSupportedPlugins()) {
// Create separate AutoUpdater per plugin
ProductAlertObserver.addObserver(plugin, new AutoUpdater());
}
}
}

View file

@ -43,7 +43,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialogBase;
* @version 1.0
*/
public abstract class AbstractCAVEDialogComponent extends AbstractCAVEComponent {
public abstract class AbstractCAVEDialogComponent extends AbstractAWIPSComponent {
protected void blockUntilClosed(CaveSWTDialogBase dlg) {
while (!dlg.isDisposed()) {
if (!Display.getCurrent().readAndDispatch()) {

View file

@ -38,7 +38,7 @@ package com.raytheon.viz.ui.personalities.awips;
* @version 1.0
*/
public class CAVE extends AbstractCAVEComponent {
public class CAVE extends AbstractAWIPSComponent {
public int getRuntimeModes() {
return (ALERT_VIZ | WORKBENCH);

View file

@ -49,12 +49,12 @@ public class HiddenWorkbenchAdvisor extends WorkbenchAdvisor {
private static final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(HiddenWorkbenchAdvisor.class);
private AbstractCAVEComponent component;
private AbstractAWIPSComponent component;
private String componentName;
public HiddenWorkbenchAdvisor(String componentName,
AbstractCAVEComponent component) {
AbstractAWIPSComponent component) {
this.component = component;
}