/*******************************************************************************
* See the NOTICE file distributed with this work for additional information
* regarding copyright ownership.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package hr.fer.zemris.vhdllab.platform.support;
import hr.fer.zemris.vhdllab.platform.context.ApplicationContextHolder;
import hr.fer.zemris.vhdllab.platform.manager.shutdown.ShutdownManager;
import hr.fer.zemris.vhdllab.platform.manager.workspace.support.WorkspaceInitializer;
import javax.swing.JFrame;
import javax.swing.ToolTipManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.richclient.application.Application;
import org.springframework.richclient.application.ApplicationWindow;
import org.springframework.richclient.application.config.ApplicationWindowConfigurer;
import org.springframework.richclient.application.config.DefaultApplicationLifecycleAdvisor;
import org.springframework.richclient.command.ActionCommand;
import org.springframework.richclient.command.CommandManager;
public class VhdllabLifecycleAdvisor extends DefaultApplicationLifecycleAdvisor {
private static final Logger LOG = Logger.getLogger(VhdllabLifecycleAdvisor.class);
@Autowired
private ShutdownManager shutdownManager;
@Autowired
private ConfirmExitDialog confirmExitDialog;
@Autowired
private WorkspaceInitializer workspaceInitializer;
@Override
public void onPreStartup() {
new UserLocaleInitializer().initLocale();
ToolTipManager.sharedInstance().setDismissDelay(15000); // 15 seconds
}
@Override
public void onPreWindowOpen(ApplicationWindowConfigurer configurer) {
super.onPreWindowOpen(configurer);
configurer.setShowToolBar(false);
}
@Override
public void onWindowOpened(ApplicationWindow window) {
window.getControl().setExtendedState(JFrame.MAXIMIZED_BOTH);
}
@Override
public void onPostStartup() {
workspaceInitializer.initWorkspace();
showUserCredentials();
showWelcomeDialog();
LOG.debug("VHDLLab version: " + getApplication().getDescriptor().getVersion());
}
private void showUserCredentials() {
ApplicationWindow window = getApplication().getActiveWindow();
JFrame frame = window.getControl();
String user = ApplicationContextHolder.getContext().getUserId();
frame.setTitle(frame.getTitle() + ", " + user);
window.getStatusBar().setMessage("Logged in as " + user);
}
private void showWelcomeDialog() {
CommandManager cm = getApplication().getActiveWindow().getCommandManager();
ActionCommand welcome = (ActionCommand) cm.getCommand("welcomeCommand");
welcome.execute();
}
@Override
public boolean onPreWindowClose(ApplicationWindow window) {
if (((VhdllabApplication) Application.instance()).isForceShutdownInProgress()) {
return true;
}
confirmExitDialog.showDialog();
if (confirmExitDialog.isExitConfirmed()) {
return !shutdownManager.shutdownWithGUI();
}
return false;
}
@Override
public void onShutdown() {
shutdownManager.shutdownWithoutGUI();
}
}