/*******************************************************************************
* Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.tools.workbench.scplugin.ui;
import java.io.File;
import org.eclipse.persistence.tools.workbench.framework.action.AbstractFrameworkAction;
import org.eclipse.persistence.tools.workbench.framework.app.ApplicationNode;
import org.eclipse.persistence.tools.workbench.framework.context.WorkbenchContext;
import org.eclipse.persistence.tools.workbench.scplugin.SCPlugin;
import org.eclipse.persistence.tools.workbench.scplugin.model.adapter.TopLinkSessionsAdapter;
import org.eclipse.persistence.tools.workbench.scplugin.model.meta.SCSessionsProperties;
import org.eclipse.persistence.tools.workbench.scplugin.ui.project.ProjectNode;
import org.eclipse.persistence.tools.workbench.utility.CollectionTools;
public class AddNewSessionsAction extends AbstractFrameworkAction {
private SCPlugin plugin;
public AddNewSessionsAction( WorkbenchContext context, SCPlugin plugin) {
super( context);
this.plugin = plugin;
}
protected void initialize() {
this.initializeText( "NEW_SESSIONS_CONFIGURATION");
this.initializeMnemonic( "NEW_SESSIONS_CONFIGURATION");
// no accelerator
this.initializeIcon( "NEW_SESSIONS_CONFIGURATION");
this.initializeToolTipText( "NEW_SESSIONS_CONFIGURATION.TOOL_TIP");
}
protected void execute() {
navigatorSelectionModel().pushExpansionState();
File sessionsFile = this.plugin.nextUntitledFile( getApplicationContext());
ApplicationNode newProjectNode = buildTopLinkSessionsNode( sessionsFile);
nodeManager().addProjectNode( newProjectNode);
navigatorSelectionModel().setSelectedNode(newProjectNode);
navigatorSelectionModel().popAndRestoreExpansionState();
}
private ApplicationNode buildTopLinkSessionsNode( File sessionsFile) {
SCSessionsProperties properties = this.plugin.getSessionsProperties( getApplicationContext(), sessionsFile);
TopLinkSessionsAdapter topLinkSessions = this.buildTopLinkSessions( properties);
updateClasspath( topLinkSessions);
return new ProjectNode( topLinkSessions, this.nodeManager().getRootNode(), this.plugin, this.getApplicationContext());
}
/**
* Builds the TopLinkSessions config model and returns its adapter.
*/
private TopLinkSessionsAdapter buildTopLinkSessions( SCSessionsProperties properties) {
return new TopLinkSessionsAdapter( properties, preferences(), true);
}
private void updateClasspath( TopLinkSessionsAdapter topLinkSessions) {
String classpath = preferences().get(SCPlugin.DEFAULT_CLASSPATH_PREFERENCE, null);
if (classpath != null && !"".equals(classpath)) {
String[] entries = classpath.split(System.getProperty("path.separator"));
topLinkSessions.getClassRepository().addClasspathEntries(0, CollectionTools.list(entries));
}
}
}