1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-14 20:45:22 +02:00

[215820][api][breaking] Move SystemRegistry implementation to Core

This commit is contained in:
Martin Oberhuber 2008-02-12 18:40:57 +00:00
parent 298a3d5a29
commit 52a332ae0b
17 changed files with 531 additions and 406 deletions

View file

@ -7,7 +7,8 @@ Bundle-Activator: org.eclipse.rse.core.RSECorePlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources,
org.eclipse.rse.services;bundle-version="[2.0.0,3.0.0)"
org.eclipse.rse.services;bundle-version="[2.0.0,3.0.0)",
org.eclipse.swt
Bundle-ActivationPolicy: lazy
Eclipse-LazyStart: true
Export-Package: org.eclipse.rse.core,

View file

@ -1,5 +1,5 @@
/********************************************************************************
* Copyright (c) 2006, 2007 IBM Corporation and others. All rights reserved.
* Copyright (c) 2006, 2008 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
@ -19,6 +19,7 @@
* Martin Oberhuber (Wind River) - [160293] NPE on startup when only Core feature is installed
* Uwe Stieber (Wind River) - [192611] RSE Core plugin may fail to initialize because of cyclic code invocation
* Martin Oberhuber (Wind River) - [165674] Sort subsystem configurations by priority then Id
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
********************************************************************************/
package org.eclipse.rse.core;
@ -33,9 +34,12 @@ import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Plugin;
import org.eclipse.rse.core.comm.SystemKeystoreProviderManager;
import org.eclipse.rse.core.model.ISystemProfileManager;
import org.eclipse.rse.core.model.ISystemRegistry;
import org.eclipse.rse.core.subsystems.ISubSystemConfigurationProxy;
import org.eclipse.rse.internal.core.RSECoreRegistry;
import org.eclipse.rse.internal.core.model.SystemProfileManager;
import org.eclipse.rse.internal.core.model.SystemRegistry;
import org.eclipse.rse.internal.core.subsystems.SubSystemConfigurationProxy;
import org.eclipse.rse.internal.core.subsystems.SubSystemConfigurationProxyComparator;
import org.eclipse.rse.internal.persistence.RSEPersistenceManager;
@ -64,7 +68,7 @@ public class RSECorePlugin extends Plugin {
private static RSECorePlugin plugin = null; // the singleton instance of this plugin
private Logger logger = null;
private ISystemRegistry _registry = null;
private ISystemRegistry _systemRegistry = null;
private IRSEPersistenceManager _persistenceManager = null;
private ISubSystemConfigurationProxy[] _subsystemConfigurations = null;
@ -76,15 +80,6 @@ public class RSECorePlugin extends Plugin {
return plugin;
}
/**
* A static convenience method - fully equivalent to
* <code>RSECorePlugin.getDefault().getPersistenceManager()</code>.
* @return the persistence manager currently in use for RSE
*/
public static IRSEPersistenceManager getThePersistenceManager() {
return getDefault().getPersistenceManager();
}
/**
* A static convenience method - fully equivalent to
* <code>RSECorePlugin.getDefault().getRegistry()</code>.
@ -94,9 +89,42 @@ public class RSECorePlugin extends Plugin {
return getDefault().getCoreRegistry();
}
/**
* A static convenience method - fully equivalent to
* <code>RSECorePlugin.getDefault().getPersistenceManager()</code>.
* @return the persistence manager currently in use for RSE
*/
public static IRSEPersistenceManager getThePersistenceManager() {
return getDefault().getPersistenceManager();
}
/**
* Return the master profile manager singleton.
* @return the RSE Profile Manager Singleton.
*/
public static ISystemProfileManager getTheSystemProfileManager() {
return SystemProfileManager.getDefault();
}
/**
* Check if the SystemRegistry has been instantiated already.
* Use this when you don't want to start the system registry as a
* side effect of retrieving it.
* @return <code>true</code> if the System Registry has been instantiated already.
*/
public static boolean isTheSystemRegistryActive()
{
if (plugin == null) {
return false;
}
return getDefault().isSystemRegistryActive();
}
/**
* A static convenience method - fully equivalent to
* <code>RSECorePlugin.getDefault().getSystemRegistry()</code>.
* The SystemRegistry is used to gain access to the basic services
* and components used in RSE.
* @return the RSE System Registry.
*/
public static ISystemRegistry getTheSystemRegistry() {
@ -173,7 +201,11 @@ public class RSECorePlugin extends Plugin {
*/
public IRSEPersistenceManager getPersistenceManager() {
if (_persistenceManager == null) {
_persistenceManager = new RSEPersistenceManager(_registry);
synchronized(this) {
if (_persistenceManager==null) {
_persistenceManager = new RSEPersistenceManager(getSystemRegistry());
}
}
}
return _persistenceManager;
}
@ -183,19 +215,43 @@ public class RSECorePlugin extends Plugin {
* that require a user interface. This should be set only by RSE startup components and
* not by any external client.
* @param registry the implementation of ISystemRegistry that the core should remember.
* @deprecated Do not use this method.
*/
public void setSystemRegistry(ISystemRegistry registry) {
_registry = registry;
_systemRegistry = registry;
}
/**
* Gets the system registry set by {@link #setSystemRegistry(ISystemRegistry)}.
* This registry is used to gain access to the basic services and components used in
* the RSE user interface.
* Test if the SystemRegistry has been instantiated already.
* Use this when you don't want to start the system registry as a
* side effect of retrieving it.
* @return <code>true</code> if the system registry has been instantiated already.
*/
private boolean isSystemRegistryActive()
{
return (_systemRegistry != null);
}
/**
* Return the SystemRegistry singleton.
* Clients should use static @{link getTheSystemRegistry()} instead.
* @return the RSE system registry
*/
public ISystemRegistry getSystemRegistry() {
return _registry;
if (_systemRegistry == null) {
synchronized(this) {
if (_systemRegistry == null) {
String logfilePath = getStateLocation().toOSString();
SystemRegistry sr = SystemRegistry.getInstance(logfilePath);
ISubSystemConfigurationProxy[] proxies = getSubSystemConfigurationProxies();
if (proxies != null) {
sr.setSubSystemConfigurationProxies(proxies);
}
_systemRegistry = sr;
}
}
}
return _systemRegistry;
}
/**

View file

@ -23,6 +23,7 @@
* David Dykstal (IBM) - [197036] adding new createHost and getSubSystemConfigurationsBySYstemType which
* are able to delay the creation of subsystems.
* David Dykstal (IBM) - [217556] remove service subsystem types
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
********************************************************************************/
package org.eclipse.rse.core.model;
@ -144,34 +145,6 @@ public interface ISystemRegistry extends ISchedulingRule, IAdaptable, ISystemVie
*/
public boolean hasConnectionChildren(IHost selectedConnection);
// ----------------------------
// USER PREFERENCE METHODS...
// ----------------------------
/**
* Are connection names to be qualified by profile name?
*/
public boolean getQualifiedHostNames();
/**
* Set if connection names are to be qualified by profile name
*/
public void setQualifiedHostNames(boolean set);
/**
* Reflect the user changing the preference for showing filter pools.
*/
public void setShowFilterPools(boolean show);
/*
* Reflect the user changing the preference for showing filter strings.
*
public void setShowFilterStrings(boolean show);
*/
/**
* Reflect the user changing the preference for showing new connection prompt
*/
public void setShowNewHostPrompt(boolean show);
// ----------------------------
// PROFILE METHODS...
// ----------------------------
@ -324,12 +297,15 @@ public interface ISystemRegistry extends ISchedulingRule, IAdaptable, ISystemVie
// CONNECTION METHODS...
// ----------------------------
/**
* Return the first connection to localhost we can find. While we always create a default one in
* the user's profile, it is possible that this profile is not active or the connection was deleted.
* However, since any connection to localHost will usually do, we just search all active profiles
* Return the first connection to the local host we can find.
*
* While we always create a default one in the user's profile, it is possible that
* this profile is not active or the connection was deleted. However, since any
* connection to the local host will usually do, we just search all active profiles
* until we find one, and return it. <br>
* If no localhost connection is found, this will return null. If one is needed, it can be created
* easily by calling {@link #createLocalHost(ISystemProfile, String, String)}.
* If no connection to the local host can be found, this will return <code>null</code>.
* If one is needed, it can be created easily by calling
* {@link #createLocalHost(ISystemProfile, String, String)}.
*/
public IHost getLocalHost();

View file

@ -1,5 +1,5 @@
/********************************************************************************
* Copyright (c) 2006, 2007 IBM Corporation and others. All rights reserved.
* Copyright (c) 2006, 2008 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
@ -8,6 +8,7 @@
* David Dykstal (IBM) - initial API and implementation
* David Dykstal (IBM) - 168977: refactoring IConnectorService and ServerLauncher hierarchies
* Martin Oberhuber (Wind River) - [184095] combined RSEModelResources and persistence.Messages into this file
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
********************************************************************************/
package org.eclipse.rse.internal.core;
@ -51,6 +52,17 @@ public class RSECoreMessages extends NLS {
// Password Persistence Manager
public static String DefaultSystemType_Label;
// SystemRegistry: Loading Profile Warning Messages - See also ISystemMessages
public static String MSG_LOADING_PROFILE_WARNING_FILTERPOOL_REFS;
public static String MSG_LOADING_PROFILE_WARNING_FILTERPOOL_REF;
public static String MSG_LOADING_PROFILE_SHOULDNOTBE_DEACTIVATED; //RSEG1069
public static String MSG_CREATEHOST_EXCEPTION;
// SystemRegistry: Progress Reporting - See also ISystemMessages
public static String MSG_COPYCONNECTION_PROGRESS; //RSEG1073
public static String MSG_COPYFILTERPOOLS_PROGRESS; //RSEG1075
public static String MSG_COPYSUBSYSTEMS_PROGRESS; //RSEG1081
private RSECoreMessages() {
}
}

View file

@ -1,5 +1,5 @@
###############################################################################
# Copyright (c) 2000, 2007 IBM Corporation and others.
# Copyright (c) 2000, 2008 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
@ -9,6 +9,7 @@
# David Dykstal (IBM) - initial API and implementation
# David Dykstal (IBM) - 168977: refactoring IConnectorService and ServerLauncher hierarchies
# Martin Oberhuber (Wind River) - [184095] combined RSEModelResources and persistence.Messages into this file
# Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
###############################################################################
# NLS_MESSAGEFORMAT_VAR
@ -44,3 +45,14 @@ SerializingProvider_UnexpectedException=Unexpected Exception
# Password Persistence Manager
DefaultSystemType_Label=Default
# SystemRegistry: Loading Profile Warning Messages - See also ISystemMessages
MSG_LOADING_PROFILE_WARNING_FILTERPOOL_REFS=RSEG1069: De-Activating profile {0} for which there are subsystems containing references to filter pools:
MSG_LOADING_PROFILE_WARNING_FILTERPOOL_REF=\ in connection {1} in profile {2}
MSG_LOADING_PROFILE_SHOULDNOTBE_DEACTIVATED=RSEG1069: Warning. Profile '{0}' should be active. Active connection '{1}' contains a reference to it.
MSG_CREATEHOST_EXCEPTION=Exception in createHost for {0}
# SystemRegistry: Progress Reporting - See also ISystemMessages
MSG_COPYCONNECTION_PROGRESS=Copying connection {0}
MSG_COPYFILTERPOOLS_PROGRESS=Copying filter pools
MSG_COPYSUBSYSTEMS_PROGRESS=Copying subsystems

View file

@ -1,5 +1,5 @@
/********************************************************************************
* Copyright (c) 2002, 2007 IBM Corporation and others. All rights reserved.
* Copyright (c) 2002, 2008 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
@ -12,9 +12,10 @@
*
* Contributors:
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
********************************************************************************/
package org.eclipse.rse.ui.internal.model;
package org.eclipse.rse.internal.core.model;
import org.eclipse.rse.core.events.ISystemResourceChangeEvent;
import org.eclipse.rse.core.events.ISystemResourceChangeListener;
import org.eclipse.swt.widgets.Display;
@ -24,7 +25,7 @@ import org.eclipse.swt.widgets.Display;
* To support posted events versus synchronous events, this class encapsulates
* the code to execute via the run() method.
* <p>
* The post behaviour is accomplished by calling the asyncExec method in the swt
* The post behavior is accomplished by calling the asyncExec method in the SWT
* widget Display class. The Display object comes from calling getDisplay() on
* the shell which we get by calling getShell on the given listener.
* <p>

View file

@ -43,9 +43,10 @@
* rewrote createHost to better pick default subsystem configurations to activate
* rewrote getSubSystemConfigurationsBySystemType to be able to delay the creation (and loading) of subsystem configurations
* David Dykstal (IBM) - [217556] remove service subsystem types
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
********************************************************************************/
package org.eclipse.rse.ui.internal.model;
package org.eclipse.rse.internal.core.model;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
@ -60,6 +61,7 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.osgi.util.NLS;
import org.eclipse.rse.core.IRSESystemType;
import org.eclipse.rse.core.IRSEUserIdConstants;
import org.eclipse.rse.core.RSECorePlugin;
@ -91,32 +93,16 @@ import org.eclipse.rse.core.model.ISystemRegistry;
import org.eclipse.rse.core.model.SystemChildrenContentsType;
import org.eclipse.rse.core.references.IRSEBaseReferencingObject;
import org.eclipse.rse.core.subsystems.IConnectorService;
import org.eclipse.rse.core.subsystems.IRemoteObjectIdentifier;
import org.eclipse.rse.core.subsystems.ISubSystem;
import org.eclipse.rse.core.subsystems.ISubSystemConfiguration;
import org.eclipse.rse.core.subsystems.ISubSystemConfigurationProxy;
import org.eclipse.rse.core.subsystems.ISystemDragDropAdapter;
import org.eclipse.rse.internal.core.RSECoreMessages;
import org.eclipse.rse.internal.core.filters.SystemFilterStartHere;
import org.eclipse.rse.internal.core.model.ISystemProfileOperation;
import org.eclipse.rse.internal.core.model.SystemHostPool;
import org.eclipse.rse.internal.core.model.SystemModelChangeEvent;
import org.eclipse.rse.internal.core.model.SystemModelChangeEventManager;
import org.eclipse.rse.internal.core.model.SystemPreferenceChangeManager;
import org.eclipse.rse.internal.core.model.SystemProfileManager;
import org.eclipse.rse.internal.core.model.SystemRemoteChangeEventManager;
import org.eclipse.rse.services.clientserver.messages.SystemMessage;
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
import org.eclipse.rse.ui.ISystemMessages;
import org.eclipse.rse.ui.RSESystemTypeAdapter;
import org.eclipse.rse.ui.RSEUIPlugin;
import org.eclipse.rse.ui.SystemBasePlugin;
import org.eclipse.rse.ui.SystemPreferencesManager;
import org.eclipse.rse.ui.messages.SystemMessageDialog;
import org.eclipse.rse.ui.view.ISystemRemoteElementAdapter;
import org.eclipse.rse.ui.view.SystemAdapterHelpers;
import org.eclipse.swt.widgets.Display;
import com.ibm.icu.text.MessageFormat;
/**
* Registry for all connections.
*/
@ -124,13 +110,12 @@ public class SystemRegistry implements ISystemRegistry
{
private static Exception lastException = null;
private static SystemRegistry registry = null;
private SystemResourceChangeManager listenerManager = null;
private SystemPreferenceChangeManager preferenceListManager = null;
private SystemModelChangeEventManager modelListenerManager = null;
private final SystemResourceChangeManager listenerManager = new SystemResourceChangeManager();
private final SystemPreferenceChangeManager preferenceListManager = new SystemPreferenceChangeManager();
private final SystemModelChangeEventManager modelListenerManager = new SystemModelChangeEventManager();
private final SystemRemoteChangeEventManager remoteListManager = new SystemRemoteChangeEventManager();
private SystemModelChangeEvent modelEvent;
private SystemRemoteChangeEventManager remoteListManager = null;
private SystemRemoteChangeEvent remoteEvent;
private int listenerCount = 0;
private int modelListenerCount = 0;
private int remoteListCount = 0;
@ -139,7 +124,6 @@ public class SystemRegistry implements ISystemRegistry
private boolean errorLoadingFactory = false;
//For ISystemViewInputProvider
private Object shell = null;
private Object viewer = null;
/**
@ -152,11 +136,6 @@ public class SystemRegistry implements ISystemRegistry
{
super();
listenerManager = new SystemResourceChangeManager();
modelListenerManager = new SystemModelChangeEventManager();
remoteListManager = new SystemRemoteChangeEventManager();
preferenceListManager = new SystemPreferenceChangeManager();
// get initial shell
//FIXME - this can cause problems - don't think we should do this here anyway
//getShell(); // will quietly fail in headless mode. Phil
@ -372,82 +351,6 @@ public class SystemRegistry implements ISystemRegistry
return result;
}
// ----------------------------
// USER PREFERENCE METHODS...
// ----------------------------
/**
* Are connection names to be qualified by profile name?
*/
public boolean getQualifiedHostNames()
{
return SystemPreferencesManager.getQualifyConnectionNames();
}
/**
* Set if connection names are to be qualified by profile name
*/
public void setQualifiedHostNames(boolean set)
{
SystemPreferencesManager.setQualifyConnectionNames(set);
IHost[] conns = getHosts();
if (conns != null)
{
for (int idx = 0; idx < conns.length; idx++)
{
fireEvent(new SystemResourceChangeEvent(conns[idx], ISystemResourceChangeEvents.EVENT_RENAME, this));
}
}
if (SystemPreferencesManager.getShowFilterPools())
{
fireEvent(new SystemResourceChangeEvent(this, ISystemResourceChangeEvents.EVENT_REFRESH, this));
}
}
/**
* Reflect the user changing the preference for showing filter pools.
*/
public void setShowFilterPools(boolean show)
{
if (subsystemConfigurationProxies != null)
{
for (int idx = 0; idx < subsystemConfigurationProxies.length; idx++)
{
if (subsystemConfigurationProxies[idx].isSubSystemConfigurationActive())
{
ISubSystemConfiguration factory = subsystemConfigurationProxies[idx].getSubSystemConfiguration();
if ((factory != null) && factory.supportsFilters())
factory.setShowFilterPools(show);
}
}
}
}
/*
* Reflect the user changing the preference for showing filter strings.
*
public void setShowFilterStrings(boolean show)
{
if (subsystemConfigurationProxies != null)
{
for (int idx = 0; idx < subsystemConfigurationProxies.length; idx++)
{
if (subsystemConfigurationProxies[idx].isSubSystemConfigurationActive())
{
SubSystemConfiguration factory = subsystemConfigurationProxies[idx].getSubSystemConfiguration();
if ((factory!=null)&&factory.supportsFilters())
factory.setShowFilterStrings(show);
}
}
}
}*/
/**
* Reflect the user changing the preference for showing new connection prompt
*/
public void setShowNewHostPrompt(boolean show)
{
fireEvent(new SystemResourceChangeEvent(this, ISystemResourceChangeEvents.EVENT_REFRESH, null));
}
// ----------------------------
// PROFILE METHODS...
// ----------------------------
@ -566,10 +469,11 @@ public class SystemRegistry implements ISystemRegistry
ssf.renameSubSystemProfile(ss, oldName, newName);
}
}
SystemPreferencesManager.setConnectionNamesOrder(); // update preferences order list
boolean namesQualifed = getQualifiedHostNames();
if (namesQualifed)
setQualifiedHostNames(namesQualifed); // causes refresh events to be fired
////Listening to events now
//SystemPreferencesManager.setConnectionNamesOrder(); // update preferences order list
//boolean namesQualifed = SystemPreferencesManager.getQualifyConnectionNames();
//if (namesQualifed)
// setQualifiedHostNames(namesQualifed); // causes refresh events to be fired
fireModelChangeEvent(
ISystemModelChangeEvents.SYSTEM_RESOURCE_RENAMED,
@ -589,7 +493,7 @@ public class SystemRegistry implements ISystemRegistry
String oldName = profile.getName();
IHost[] newConns = null;
//RSEUIPlugin.logDebugMessage(this.getClass().getName(), "Start of system profile copy. From: "+oldName+" to: "+newName+", makeActive: "+makeActive);
//RSECorePlugin.getDefault().getLogger().logDebugMessage(this.getClass().getName(), "Start of system profile copy. From: "+oldName+" to: "+newName+", makeActive: "+makeActive);
// STEP 0: BRING ALL IMPACTED SUBSYSTEM FACTORIES TO LIFE NOW, BEFORE CREATING THE NEW PROFILE.
// IF WE DO NOT DO THIS NOW, THEN THEY WILL CREATE A FILTER POOL MGR FOR THE NEW PROFILE AS THEY COME
// TO LIFE... SOMETHING WE DON'T WANT!
@ -613,12 +517,12 @@ public class SystemRegistry implements ISystemRegistry
if ((conns != null) && (conns.length > 0))
{
newConns = new IHost[conns.length];
SystemMessage msgNoSubs = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_COPYCONNECTION_PROGRESS);
String msgNoSubs = RSECoreMessages.MSG_COPYCONNECTION_PROGRESS;
for (int idx = 0; idx < conns.length; idx++)
{
msgNoSubs.makeSubstitution(conns[idx].getAliasName());
SystemBasePlugin.logDebugMessage(this.getClass().getName(), msgNoSubs.getLevelOneText());
monitor.subTask(msgNoSubs.getLevelOneText());
msg = NLS.bind(msgNoSubs, conns[idx].getAliasName());
RSECorePlugin.getDefault().getLogger().logDebugMessage(this.getClass().getName(), msg);
monitor.subTask(msg);
newConns[idx] = oldPool.cloneHost(newPool, conns[idx], conns[idx].getAliasName());
@ -626,9 +530,9 @@ public class SystemRegistry implements ISystemRegistry
//try { java.lang.Thread.sleep(3000l); } catch (InterruptedException e) {}
}
}
msg = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_COPYFILTERPOOLS_PROGRESS).getLevelOneText();
msg = RSECoreMessages.MSG_COPYFILTERPOOLS_PROGRESS;
monitor.subTask(msg);
SystemBasePlugin.logDebugMessage(this.getClass().getName(), msg);
RSECorePlugin.getDefault().getLogger().logDebugMessage(this.getClass().getName(), msg);
// STEP 4: CREATE NEW FILTER POOL MANAGER
// STEP 5: COPY ALL FILTER POOLS FROM OLD MANAGER TO NEW MANAGER
@ -637,7 +541,7 @@ public class SystemRegistry implements ISystemRegistry
ISubSystemConfiguration factory = (ISubSystemConfiguration) factories.elementAt(idx);
msg = "Copying filterPools for factory " + factory.getName(); //$NON-NLS-1$
//monitor.subTask(msg);
SystemBasePlugin.logDebugMessage(this.getClass().getName(), msg);
RSECorePlugin.getDefault().getLogger().logDebugMessage(this.getClass().getName(), msg);
factory.copyFilterPoolManager(profile, newProfile);
//try { java.lang.Thread.sleep(3000l); } catch (InterruptedException e) {}
}
@ -645,9 +549,9 @@ public class SystemRegistry implements ISystemRegistry
monitor.worked(1);
// STEP 6: COPY ALL SUBSYSTEMS FOR EACH COPIED CONNECTION
msg = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_COPYSUBSYSTEMS_PROGRESS).getLevelOneText();
msg = RSECoreMessages.MSG_COPYSUBSYSTEMS_PROGRESS;
monitor.subTask(msg);
SystemBasePlugin.logDebugMessage(this.getClass().getName(), msg);
RSECorePlugin.getDefault().getLogger().logDebugMessage(this.getClass().getName(), msg);
if ((conns != null) && (conns.length > 0))
{
ISubSystem[] subsystems = null;
@ -656,7 +560,7 @@ public class SystemRegistry implements ISystemRegistry
{
msg = "Copying subsystems for connection " + conns[idx].getAliasName(); //$NON-NLS-1$
//monitor.subTask(msg);
SystemBasePlugin.logDebugMessage(this.getClass().getName(), msg);
RSECorePlugin.getDefault().getLogger().logDebugMessage(this.getClass().getName(), msg);
subsystems = getSubSystems(conns[idx]); // get old subsystems for this connection
if ((subsystems != null) && (subsystems.length > 0) && newConns != null)
{
@ -664,7 +568,7 @@ public class SystemRegistry implements ISystemRegistry
{
msg += ": subsystem " + subsystems[jdx].getName(); //$NON-NLS-1$
//monitor.subTask(msg);
SystemBasePlugin.logDebugMessage(this.getClass().getName(), msg);
RSECorePlugin.getDefault().getLogger().logDebugMessage(this.getClass().getName(), msg);
factory = subsystems[jdx].getSubSystemConfiguration();
factory.cloneSubSystem(subsystems[jdx], newConns[idx], true); // true=>copy profile op vs copy connection op
//try { java.lang.Thread.sleep(3000l); } catch (InterruptedException e) {}
@ -698,7 +602,7 @@ public class SystemRegistry implements ISystemRegistry
}
catch (Exception exc)
{
SystemBasePlugin.logError("Exception (ignored) cleaning up from copy-profile exception.", exc); //$NON-NLS-1$
RSECorePlugin.getDefault().getLogger().logError("Exception (ignored) cleaning up from copy-profile exception.", exc); //$NON-NLS-1$
}
throw (lastExc);
}
@ -712,7 +616,7 @@ public class SystemRegistry implements ISystemRegistry
ISystemModelChangeEvents.SYSTEM_RESOURCETYPE_PROFILE,
newProfile, null);
SystemBasePlugin.logDebugMessage(this.getClass().getName(), "Copy of system profile " + oldName + " to " + newName + " successful"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
RSECorePlugin.getDefault().getLogger().logDebugMessage(this.getClass().getName(), "Copy of system profile " + oldName + " to " + newName + " successful"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
return newProfile;
}
@ -749,7 +653,8 @@ public class SystemRegistry implements ISystemRegistry
}
// last step... physically blow away the profile...
getSystemProfileManager().deleteSystemProfile(profile, true);
SystemPreferencesManager.setConnectionNamesOrder(); // update preferences order list
////Listening to Events now
//SystemPreferencesManager.setConnectionNamesOrder(); // update preferences order list
if (connections.length > 0) // defect 42112
fireEvent(new SystemResourceChangeEvent(connections, ISystemResourceChangeEvents.EVENT_DELETE_MANY, this));
@ -786,26 +691,29 @@ public class SystemRegistry implements ISystemRegistry
}
if (activeReferenceVector.size() > 0)
{
SystemBasePlugin.logWarning(
ISystemMessages.MSG_LOADING_PROFILE_SHOULDNOTBE_DEACTIVATED
+ ": De-Activativing profile " //$NON-NLS-1$
+ profile.getName()
+ " for which there are subsystems containing references to filter pools:"); //$NON-NLS-1$
//RSEG1069: De-Activativing profile {0} for which there are subsystems containing references to filter pools:
String msg = NLS.bind(RSECoreMessages.MSG_LOADING_PROFILE_WARNING_FILTERPOOL_REFS, profile.getName());
RSECorePlugin.getDefault().getLogger().logWarning(msg);
for (int idx = 0; idx < activeReferenceVector.size(); idx++)
{
//\ \ {refname} in connection {1} in profile {2}
ISubSystem activeReference = (ISubSystem) activeReferenceVector.elementAt(idx);
SystemBasePlugin.logWarning(
" " + activeReference.getName() + " in connection " + activeReference.getHost().getAliasName() + " in profile " + activeReference.getSystemProfileName()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
msg = " " + activeReference.getName(); //$NON-NLS-1$
msg += NLS.bind(RSECoreMessages.MSG_LOADING_PROFILE_WARNING_FILTERPOOL_REF,
activeReference.getHost().getAliasName(),
activeReference.getSystemProfileName());
RSECorePlugin.getDefault().getLogger().logWarning(msg);
}
ISubSystem firstSubSystem = (ISubSystem) activeReferenceVector.elementAt(0);
String connectionName = firstSubSystem.getHost().getSystemProfileName() + "." + firstSubSystem.getHost().getAliasName(); //$NON-NLS-1$
//Warning. Profile '%1' should be active. Active connection '%2' contains a reference to it.
//FIXME I think it should be sufficient to log this as warning rather than open a dialog
SystemMessage sysMsg = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_LOADING_PROFILE_SHOULDNOTBE_DEACTIVATED);
sysMsg.makeSubstitution(profile.getName(), connectionName);
SystemBasePlugin.logWarning(sysMsg.getFullMessageID() + ": " + sysMsg.getLevelOneText()); //$NON-NLS-1$
SystemMessageDialog msgDlg = new SystemMessageDialog(null, sysMsg);
msgDlg.open();
//RSEG1069: Warning. Profile '%1' should be active. Active connection '%2' contains a reference to it.
msg = NLS.bind(RSECoreMessages.MSG_LOADING_PROFILE_SHOULDNOTBE_DEACTIVATED, profile.getName(), connectionName);
RSECorePlugin.getDefault().getLogger().logWarning(msg);
//// I think it should be sufficient to log this as warning rather than open a dialog
//SystemMessage sysMsg = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_LOADING_PROFILE_SHOULDNOTBE_DEACTIVATED);
//sysMsg.makeSubstitution(profile.getName(), connectionName);
//SystemMessageDialog msgDlg = new SystemMessageDialog(null, sysMsg);
//msgDlg.open();
}
getSystemProfileManager().makeSystemProfileActive(profile, makeActive);
@ -848,7 +756,8 @@ public class SystemRegistry implements ISystemRegistry
SystemResourceChangeEvent event = new SystemResourceChangeEvent(affectedConnections, ISystemResourceChangeEvents.EVENT_ADD_MANY, this);
fireEvent(event);
}
SystemPreferencesManager.setConnectionNamesOrder(); // update preferences order list
////Listening to Events now
//SystemPreferencesManager.setConnectionNamesOrder(); // update preferences order list
fireModelChangeEvent(
ISystemModelChangeEvents.SYSTEM_RESOURCE_CHANGED,
@ -1611,7 +1520,7 @@ public class SystemRegistry implements ISystemRegistry
}
catch (Exception exc)
{
SystemBasePlugin.logError("Error creating local connection", exc); //$NON-NLS-1$
RSECorePlugin.getDefault().getLogger().logError("Error creating local connection", exc); //$NON-NLS-1$
}
return localConn;
}
@ -1687,8 +1596,8 @@ public class SystemRegistry implements ISystemRegistry
host = pool.getHost(hostName);
}
} catch (Exception e) {
String pluginId = RSEUIPlugin.getDefault().getSymbolicName();
String message = MessageFormat.format("Exception in createHost for {0}", new Object[] {hostName});
String pluginId = RSECorePlugin.getDefault().getBundle().getSymbolicName();
String message = NLS.bind(RSECoreMessages.MSG_CREATEHOST_EXCEPTION, hostName);
status = new Status(IStatus.ERROR, pluginId, message, e);
}
if (status.isOK()) {
@ -1736,14 +1645,15 @@ public class SystemRegistry implements ISystemRegistry
IStatus status = SystemProfileManager.run(op);
lastException = (Exception) status.getException();
if (lastException != null) {
SystemBasePlugin.logError(status.getMessage(), lastException);
RSECorePlugin.getDefault().getLogger().logError(status.getMessage(), lastException);
throw lastException;
}
IHost host = op.getHost();
ISubSystem[] subsystems = op.getSubSystems();
FireNewHostEvents fire = new FireNewHostEvents(host, subsystems, sr);
Display.getDefault().asyncExec(fire);
SystemPreferencesManager.setConnectionNamesOrder(); // update preferences order list
////Listening to FireNewHostEvents now
//SystemPreferencesManager.setConnectionNamesOrder(); // update preferences order list
return host;
}
@ -2032,13 +1942,13 @@ public class SystemRegistry implements ISystemRegistry
}
catch (SystemMessageException exc)
{
SystemBasePlugin.logError("Exception in updateConnection for " + connectionName, exc); //$NON-NLS-1$
RSECorePlugin.getDefault().getLogger().logError("Exception in updateConnection for " + connectionName, exc); //$NON-NLS-1$
lastException = exc;
return;
}
catch (Exception exc)
{
SystemBasePlugin.logError("Exception in updateConnection for " + connectionName, exc); //$NON-NLS-1$
RSECorePlugin.getDefault().getLogger().logError("Exception in updateConnection for " + connectionName, exc); //$NON-NLS-1$
lastException = exc;
return;
}
@ -2101,7 +2011,8 @@ public class SystemRegistry implements ISystemRegistry
((ISubSystemConfiguration) affectedSubSystemFactories.elementAt(idx)).deleteSubSystemsByConnection(conn);
}
conn.getHostPool().deleteHost(conn); // delete from memory and from disk.
SystemPreferencesManager.setConnectionNamesOrder(); // update preferences order list
////Listening to Events now
//SystemPreferencesManager.setConnectionNamesOrder(); // update preferences order list
fireModelChangeEvent(
ISystemModelChangeEvents.SYSTEM_RESOURCE_REMOVED,
ISystemModelChangeEvents.SYSTEM_RESOURCETYPE_CONNECTION,
@ -2134,7 +2045,8 @@ public class SystemRegistry implements ISystemRegistry
((ISubSystemConfiguration) affectedSubSystemFactories.elementAt(idx)).renameSubSystemsByConnection(conn, newName);
*/
conn.getHostPool().renameHost(conn, newName); // rename in memory and disk
SystemPreferencesManager.setConnectionNamesOrder(); // update preferences order list
////Listening to events now
//SystemPreferencesManager.setConnectionNamesOrder(); // update preferences order list
fireModelChangeEvent(
ISystemModelChangeEvents.SYSTEM_RESOURCE_RENAMED,
ISystemModelChangeEvents.SYSTEM_RESOURCETYPE_CONNECTION,
@ -2150,7 +2062,8 @@ public class SystemRegistry implements ISystemRegistry
{
ISystemHostPool pool = getHostPool(profileName);
pool.moveHosts(conns, delta);
SystemPreferencesManager.setConnectionNamesOrder();
////Listening to Event now
//SystemPreferencesManager.setConnectionNamesOrder();
//fireEvent(new SystemResourceChangeEvent(pool.getSystemConnections(),ISystemResourceChangeEvent.EVENT_MOVE_MANY,this));
SystemResourceChangeEvent event = new SystemResourceChangeEvent(conns, ISystemResourceChangeEvents.EVENT_MOVE_MANY, this);
event.setPosition(delta);
@ -2177,7 +2090,7 @@ public class SystemRegistry implements ISystemRegistry
ISystemHostPool targetPool = getHostPool(targetProfile);
IHost newConn = null;
SystemBasePlugin.logDebugMessage(this.getClass().getName(), "Start of system connection copy. From: " + oldName + " to: " + newName); //$NON-NLS-1$ //$NON-NLS-2$
RSECorePlugin.getDefault().getLogger().logDebugMessage(this.getClass().getName(), "Start of system connection copy. From: " + oldName + " to: " + newName); //$NON-NLS-1$ //$NON-NLS-2$
// STEP 0: BRING ALL IMPACTED SUBSYSTEM FACTORIES TO LIFE NOW, BEFORE DOING THE CLONE.
getSubSystemFactories(conn);
@ -2190,15 +2103,15 @@ public class SystemRegistry implements ISystemRegistry
newConn = oldPool.cloneHost(targetPool, conn, newName);
// STEP 2: COPY ALL SUBSYSTEMS FOR THE COPIED CONNECTION
msg = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_COPYSUBSYSTEMS_PROGRESS).getLevelOneText();
msg = RSECoreMessages.MSG_COPYSUBSYSTEMS_PROGRESS;
//monitor.subTask(msg);
SystemBasePlugin.logDebugMessage(this.getClass().getName(), msg);
RSECorePlugin.getDefault().getLogger().logDebugMessage(this.getClass().getName(), msg);
ISubSystem[] subsystems = null;
ISubSystemConfiguration factory = null;
msg = "Copying subsystems for connection " + conn.getAliasName(); //$NON-NLS-1$
//monitor.subTask(msg);
SystemBasePlugin.logDebugMessage(this.getClass().getName(), msg);
RSECorePlugin.getDefault().getLogger().logDebugMessage(this.getClass().getName(), msg);
subsystems = getSubSystems(conn); // get old subsystems for this connection
if ((subsystems != null) && (subsystems.length > 0))
{
@ -2206,7 +2119,7 @@ public class SystemRegistry implements ISystemRegistry
{
msg += ": subsystem " + subsystems[jdx].getName(); //$NON-NLS-1$
//monitor.subTask(msg);
SystemBasePlugin.logDebugMessage(this.getClass().getName(), msg);
RSECorePlugin.getDefault().getLogger().logDebugMessage(this.getClass().getName(), msg);
factory = subsystems[jdx].getSubSystemConfiguration();
factory.cloneSubSystem(subsystems[jdx], newConn, false); // false=>copy connection op vs copy profile op
//try { java.lang.Thread.sleep(3000l); } catch (InterruptedException e) {}
@ -2229,11 +2142,11 @@ public class SystemRegistry implements ISystemRegistry
}
catch (Exception exc)
{
SystemBasePlugin.logError("Exception (ignored) cleaning up from copy-connection exception.", exc); //$NON-NLS-1$
RSECorePlugin.getDefault().getLogger().logError("Exception (ignored) cleaning up from copy-connection exception.", exc); //$NON-NLS-1$
}
throw (lastExc);
}
SystemBasePlugin.logDebugMessage(this.getClass().getName(), "Copy of system connection " + oldName + " to " + newName + " successful"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
RSECorePlugin.getDefault().getLogger().logDebugMessage(this.getClass().getName(), "Copy of system connection " + oldName + " to " + newName + " successful"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
if (getSystemProfileManager().isSystemProfileActive(targetProfile.getName()))
{
int eventType = ISystemResourceChangeEvents.EVENT_ADD_RELATIVE;
@ -2263,13 +2176,13 @@ public class SystemRegistry implements ISystemRegistry
if (newConn != null)
{
deleteHost(conn); // delete old connection now that new one created successfully
SystemBasePlugin.logDebugMessage(this.getClass().getName(), "Move of system connection " + conn.getAliasName() + " to profile " + targetProfile.getName() + " successful"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
RSECorePlugin.getDefault().getLogger().logDebugMessage(this.getClass().getName(), "Move of system connection " + conn.getAliasName() + " to profile " + targetProfile.getName() + " successful"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
fireEvent(new SystemResourceChangeEvent(conn, ISystemResourceChangeEvents.EVENT_DELETE, this));
}
}
catch (Exception exc)
{
//RSEUIPlugin.logError("Exception moving system connection " + conn.getAliasName() + " to profile " + targetProfile.getName(), exc);
//RSECorePlugin.getDefault().getLogger().logError("Exception moving system connection " + conn.getAliasName() + " to profile " + targetProfile.getName(), exc);
throw exc;
}
return newConn;
@ -2770,9 +2683,34 @@ public class SystemRegistry implements ISystemRegistry
* Returns the implementation of ISystemRemoteElement for the given
* object. Returns null if this object does not adaptable to this.
*/
protected ISystemRemoteElementAdapter getRemoteAdapter(Object o)
protected IRemoteObjectIdentifier getRemoteObjectIdentifier(Object o)
{
return SystemAdapterHelpers.getRemoteAdapter(o);
//Try 1: element already an instance of IRemoteObjectIdentifier?
if (o instanceof IRemoteObjectIdentifier) {
return (IRemoteObjectIdentifier)o;
}
//Try 2: adapts to IRemoteObjectIdentifier (non-UI code only!)
IRemoteObjectIdentifier adapter = null;
if (o instanceof IAdaptable) {
adapter = (IRemoteObjectIdentifier)((IAdaptable)o).getAdapter(IRemoteObjectIdentifier.class);
if (adapter!=null) return adapter;
} else if (o==null) {
return null;
}
//Try 3: IRemoteObjectIdentifier via factories.
//TODO Try loadAdapter() to force lazy loading?
adapter = (IRemoteObjectIdentifier)Platform.getAdapterManager().getAdapter(o, IRemoteObjectIdentifier.class);
if (adapter==null) {
//Try 4: ISystemDragDropAdapter, fallback to old factories provided via AbstractSystemViewRemoteAdapterFactory
//This is a fallback for pre-RSE-3.0 code and may introduce UI dependency!
if (o instanceof IAdaptable) {
//TODO Try loadAdapter() to force lazy loading?
adapter = (ISystemDragDropAdapter)((IAdaptable)o).getAdapter(ISystemDragDropAdapter.class);
if (adapter!=null) return adapter;
}
adapter = (ISystemDragDropAdapter)Platform.getAdapterManager().getAdapter(o, ISystemDragDropAdapter.class);
}
return adapter;
}
private String getRemoteResourceAbsoluteName(Object remoteResource)
@ -2787,17 +2725,17 @@ public class SystemRegistry implements ISystemRegistry
ISystemFilterReference ref = (ISystemFilterReference)remoteResource;
ISubSystem ss = ref.getSubSystem();
remoteResource = ss.getTargetForFilter(ref);
ISystemRemoteElementAdapter ra = getRemoteAdapter(remoteResource);
if (ra == null)
IRemoteObjectIdentifier rid = getRemoteObjectIdentifier(remoteResource);
if (rid == null)
return null;
remoteResourceName = ra.getAbsoluteName(remoteResource);
remoteResourceName = rid.getAbsoluteName(remoteResource);
}
else
{
ISystemRemoteElementAdapter ra = getRemoteAdapter(remoteResource);
if (ra == null)
IRemoteObjectIdentifier rid = getRemoteObjectIdentifier(remoteResource);
if (rid == null)
return null;
remoteResourceName = ra.getAbsoluteName(remoteResource);
remoteResourceName = rid.getAbsoluteName(remoteResource);
}
return remoteResourceName;
}
@ -3024,11 +2962,11 @@ public class SystemRegistry implements ISystemRegistry
boolean ok = true;
lastException = null;
/*
SystemProfileManager profileManager = SystemStartHere.getSystemProfileManager();
SystemProfileManager profileManager = RSECorePlugin.getTheSystemProfileManager();
SystemHostPool pool = null;
SystemPreferencesManager prefmgr = SystemPreferencesManager.getPreferencesManager();
if (!RSEUIPlugin.getThePersistenceManager().restore(profileManager))
if (!RSECorePlugin.getThePersistenceManager().restore(profileManager))
{
SystemProfile[] profiles = profileManager.getActiveSystemProfiles();
for (int idx = 0; idx < profiles.length; idx++)
@ -3042,7 +2980,7 @@ public class SystemRegistry implements ISystemRegistry
catch (Exception exc)
{
lastException = exc;
RSEUIPlugin.logError("Exception in restore for connection pool " + profiles[idx].getName(), exc);
RSECorePlugin.getDefault().getLogger().logError("Exception in restore for connection pool " + profiles[idx].getName(), exc);
}
}
}
@ -3066,8 +3004,8 @@ public class SystemRegistry implements ISystemRegistry
// ----------------------------------
/**
* Return the children objects to constitute the root elements in the system view tree.
* We return all connections for all active profiles.
* Return the child objects to constitute the root elements in the system view tree.
* We return all connections that have an enabled system type.
*/
public Object[] getSystemViewRoots()
{
@ -3077,11 +3015,11 @@ public class SystemRegistry implements ISystemRegistry
for (int i = 0; i < connections.length; i++) {
IHost con = connections[i];
IRSESystemType sysType = con.getSystemType();
if (sysType != null) { // sysType can be null if workspace contains a host that is no longer defined by the workbench
RSESystemTypeAdapter adapter = (RSESystemTypeAdapter)(sysType.getAdapter(RSESystemTypeAdapter.class));
// Note: System types without registered subsystems get disabled by the adapter itself!
// There is no need to re-check this here again.
if (adapter.isEnabled(sysType)) result.add(con);
// sysType can be null if workspace contains a host that is no longer defined by the workbench
if (sysType != null && sysType.isEnabled()) {
// Note: System types without registered subsystems get disabled by the default
// AbstractRSESystemType implementation itself! There is no need to re-check this here again.
result.add(con);
}
}
return result.toArray();
@ -3105,42 +3043,6 @@ public class SystemRegistry implements ISystemRegistry
return true;
}
/*
* (non-Javadoc)
* @see org.eclipse.rse.ui.view.ISystemViewInputProvider#setShell(java.lang.Object)
*/
public void setShell(Object shell)
{
this.shell = shell;
}
/*
* (non-Javadoc)
* @see org.eclipse.rse.ui.model.ISystemShellProvider#getShell()
*/
public Object getShell()
{
// // thread safe shell
// IWorkbench workbench = RSEUIPlugin.getDefault().getWorkbench();
// if (workbench != null)
// {
// // first try to get the active workbench window
// IWorkbenchWindow ww = workbench.getActiveWorkbenchWindow();
// if (ww == null) // no active window so just get the first one
// ww = workbench.getWorkbenchWindows()[0];
// if (ww != null)
// {
// Shell shell = ww.getShell();
// if (!shell.isDisposed())
// {
// return shell;
// }
// }
// }
// return null;
return this.shell;
}
/*
* (non-Javadoc)
* @see org.eclipse.rse.ui.view.ISystemViewInputProvider#setViewer(java.lang.Object)

View file

@ -13,9 +13,10 @@
* Contributors:
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [218659] Make *EventManager, *ChangeManager thread-safe
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
********************************************************************************/
package org.eclipse.rse.ui.internal.model;
package org.eclipse.rse.internal.core.model;
import java.util.ArrayList;
import java.util.List;

View file

@ -1,5 +1,5 @@
/********************************************************************************
* Copyright (c) 2002, 2007 IBM Corporation and others. All rights reserved.
* Copyright (c) 2002, 2008 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
@ -13,12 +13,12 @@
* Contributors:
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
********************************************************************************/
package org.eclipse.rse.internal.ui.actions;
import org.eclipse.rse.core.RSECorePlugin;
import org.eclipse.rse.core.events.ISystemPreferenceChangeEvents;
import org.eclipse.rse.core.model.ISystemRegistry;
import org.eclipse.rse.internal.core.model.SystemPreferenceChangeEvent;
import org.eclipse.rse.internal.ui.SystemResources;
import org.eclipse.rse.ui.RSEUIPlugin;
@ -33,8 +33,6 @@ import org.eclipse.swt.widgets.Shell;
public class SystemPreferenceQualifyConnectionNamesAction extends SystemBaseAction
{
private ISystemRegistry sr = null;
/**
* Constructor
*/
@ -44,8 +42,7 @@ public class SystemPreferenceQualifyConnectionNamesAction extends SystemBaseActi
parent);
setSelectionSensitive(false);
allowOnMultipleSelection(true);
sr = RSECorePlugin.getTheSystemRegistry();
setChecked(sr.getQualifiedHostNames());
setChecked(RSEUIPlugin.getTheSystemRegistryUI().getQualifiedHostNames());
setHelp(RSEUIPlugin.HELPPREFIX+"actn0008"); //$NON-NLS-1$
}
@ -57,7 +54,7 @@ public class SystemPreferenceQualifyConnectionNamesAction extends SystemBaseActi
public void run()
{
boolean newState = isChecked();
sr.setQualifiedHostNames(newState);
RSEUIPlugin.getTheSystemRegistryUI().setQualifiedHostNames(newState);
firePreferenceChangeEvent(ISystemPreferenceChangeEvents.EVENT_QUALIFYCONNECTIONNAMES,
!newState,newState); // defect 41794
}

View file

@ -1,5 +1,5 @@
/********************************************************************************
* Copyright (c) 2006, 2007 IBM Corporation and others. All rights reserved.
* Copyright (c) 2006, 2008 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
@ -16,6 +16,7 @@
* Martin Oberhuber (Wind River) - [180562] don't implement ISystemPreferencesConstants
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
********************************************************************************/
package org.eclipse.rse.internal.ui.propertypages;
@ -195,14 +196,14 @@ public class RemoteSystemsPreferencePage
{
boolean ok = super.performOk();
SystemPreferencesManager.savePreferences(); // better save to disk, just in case.
if (!RSEUIPlugin.getDefault().isSystemRegistryActive())
if (!RSECorePlugin.isTheSystemRegistryActive())
return ok;
if (showFilterPoolsEditor != null)
{
boolean newValue = showFilterPoolsEditor.getBooleanValue();
if (newValue != lastShowFilterPoolsValue)
{
RSECorePlugin.getTheSystemRegistry().setShowFilterPools(newValue);
RSEUIPlugin.getTheSystemRegistryUI().setShowFilterPools(newValue);
firePreferenceChangeEvent(ISystemPreferenceChangeEvents.EVENT_SHOWFILTERPOOLS,lastShowFilterPoolsValue,newValue);
}
lastShowFilterPoolsValue = newValue;
@ -212,7 +213,7 @@ public class RemoteSystemsPreferencePage
boolean newValue = showNewConnectionPromptEditor.getBooleanValue();
if (newValue != lastShowNewConnectionPromptValue)
{
RSECorePlugin.getTheSystemRegistry().setShowNewHostPrompt(newValue);
RSEUIPlugin.getTheSystemRegistryUI().setShowNewHostPrompt(newValue);
}
lastShowNewConnectionPromptValue = newValue;
}
@ -221,7 +222,7 @@ public class RemoteSystemsPreferencePage
boolean newValue = qualifyConnectionNamesEditor.getBooleanValue();
if (newValue != lastQualifyConnectionNamesValue)
{
RSECorePlugin.getTheSystemRegistry().setQualifiedHostNames(newValue);
RSEUIPlugin.getTheSystemRegistryUI().setQualifiedHostNames(newValue);
firePreferenceChangeEvent(ISystemPreferenceChangeEvents.EVENT_QUALIFYCONNECTIONNAMES,lastQualifyConnectionNamesValue,newValue);
}
lastQualifyConnectionNamesValue = newValue;

View file

@ -1,5 +1,5 @@
/********************************************************************************
* Copyright (c) 2007 IBM Corporation. All rights reserved.
* Copyright (c) 2007, 2008 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
@ -12,6 +12,7 @@
*
* Contributors:
* Kevin Doyle (IBM) - [195537] Move ElementComparer From SystemView to Separate File
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
********************************************************************************/
package org.eclipse.rse.internal.ui.view;
@ -20,7 +21,7 @@ import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.viewers.IElementComparer;
import org.eclipse.rse.core.RSECorePlugin;
import org.eclipse.rse.core.model.ISystemRegistry;
import org.eclipse.rse.ui.internal.model.SystemRegistry;
import org.eclipse.rse.internal.core.model.SystemRegistry;
import org.eclipse.rse.ui.view.ISystemViewElementAdapter;
public class ElementComparer implements IElementComparer

View file

@ -1,5 +1,5 @@
/********************************************************************************
* Copyright (c) 2002, 2007 IBM Corporation and others. All rights reserved.
* Copyright (c) 2002, 2008 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
@ -25,6 +25,7 @@
* Martin Oberhuber (Wind River) - [199585] Fix NPE during testConnectionRemoval unit test
* David McKnight (IBM) - [187543] use view filter to only show containers for set input dialog
* David McKnight (IBM) - [210229] table refresh needs unique table-specific tooltip-text
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
********************************************************************************/
package org.eclipse.rse.internal.ui.view;
@ -71,6 +72,7 @@ import org.eclipse.rse.core.model.ISystemProfile;
import org.eclipse.rse.core.model.ISystemRegistry;
import org.eclipse.rse.core.subsystems.ISubSystem;
import org.eclipse.rse.core.subsystems.ISystemDragDropAdapter;
import org.eclipse.rse.internal.core.model.SystemRegistry;
import org.eclipse.rse.internal.ui.SystemPropertyResources;
import org.eclipse.rse.internal.ui.SystemResources;
import org.eclipse.rse.internal.ui.actions.SystemCommonDeleteAction;
@ -87,7 +89,6 @@ import org.eclipse.rse.ui.actions.SystemRefreshAction;
import org.eclipse.rse.ui.actions.SystemTablePrintAction;
import org.eclipse.rse.ui.dialogs.SystemPromptDialog;
import org.eclipse.rse.ui.dialogs.SystemSelectAnythingDialog;
import org.eclipse.rse.ui.internal.model.SystemRegistry;
import org.eclipse.rse.ui.messages.ISystemMessageLine;
import org.eclipse.rse.ui.model.ISystemShellProvider;
import org.eclipse.rse.ui.view.IRSEViewPart;

View file

@ -1,5 +1,5 @@
/********************************************************************************
* Copyright (c) 2002, 2007 IBM Corporation and others. All rights reserved.
* Copyright (c) 2002, 2008 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
@ -31,6 +31,7 @@
* Xuan Chen (IBM) - [160775] [api] rename (at least within a zip) blocks UI thread
* Martin Oberhuber (Wind River) - [216266] Consider stateless subsystems (supportsSubSystemConnect==false)
* David Dykstal (IBM) - [197036] minor refactoring caused by SystemRegistry fix for this bug
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
********************************************************************************/
package org.eclipse.rse.internal.ui.view;
@ -234,7 +235,7 @@ public class SystemViewConnectionAdapter
public String getText(Object element)
{
IHost conn = (IHost)element;
boolean qualifyNames = RSECorePlugin.getTheSystemRegistry().getQualifiedHostNames();
boolean qualifyNames = RSEUIPlugin.getTheSystemRegistryUI().getQualifiedHostNames();
if (!qualifyNames)
return conn.getAliasName();
else

View file

@ -1,5 +1,5 @@
/********************************************************************************
* Copyright (c) 2006, 2007 IBM Corporation and others. All rights reserved.
* Copyright (c) 2006, 2008 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
@ -29,6 +29,7 @@
* David Dykstal (IBM) - [191038] initialize SystemRegistryUI without a log file, it was not used
* David McKnight (IBM) - [196838] Don't recreate local after it has been deleted
* David Dykstal (IBM) - [197036] formatted the initialize job to be able to read it
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
********************************************************************************/
package org.eclipse.rse.ui;
@ -53,10 +54,10 @@ import org.eclipse.rse.core.events.SystemResourceChangeEvent;
import org.eclipse.rse.core.model.ISystemProfile;
import org.eclipse.rse.core.model.ISystemProfileManager;
import org.eclipse.rse.core.model.ISystemRegistry;
import org.eclipse.rse.core.model.SystemStartHere;
import org.eclipse.rse.core.subsystems.ISubSystemConfiguration;
import org.eclipse.rse.core.subsystems.ISubSystemConfigurationProxy;
import org.eclipse.rse.internal.core.model.SystemProfileManager;
import org.eclipse.rse.internal.core.model.SystemRegistry;
import org.eclipse.rse.internal.ui.RSESystemTypeAdapterFactory;
import org.eclipse.rse.internal.ui.SystemResourceListener;
import org.eclipse.rse.internal.ui.SystemResources;
@ -69,7 +70,6 @@ import org.eclipse.rse.persistence.IRSEPersistenceManager;
import org.eclipse.rse.services.clientserver.messages.ISystemMessageProvider;
import org.eclipse.rse.services.clientserver.messages.SystemMessage;
import org.eclipse.rse.services.clientserver.messages.SystemMessageFile;
import org.eclipse.rse.ui.internal.model.SystemRegistry;
import org.eclipse.rse.ui.internal.model.SystemRegistryUI;
import org.eclipse.rse.ui.model.ISystemRegistryUI;
import org.osgi.framework.BundleContext;
@ -89,8 +89,8 @@ public class RSEUIPlugin extends SystemBasePlugin implements ISystemMessageProvi
public IStatus run(IProgressMonitor monitor) {
//System.err.println("InitRSEJob started"); //$NON-NLS-1$
ISystemRegistry registry = getSystemRegistryInternal();
SystemStartHere.getSystemProfileManager(); // create folders per profile
ISystemRegistry registry = RSECorePlugin.getTheSystemRegistry();
RSECorePlugin.getTheSystemProfileManager(); // create folders per profile
// add workspace listener for our project
IProject remoteSystemsProject = SystemResourceManager.getRemoteSystemsProject(false);
SystemResourceListener listener = SystemResourceListener.getListener(remoteSystemsProject);
@ -105,7 +105,7 @@ public class RSEUIPlugin extends SystemBasePlugin implements ISystemMessageProvi
if (systemType != null) {
RSESystemTypeAdapter adapter = (RSESystemTypeAdapter)(systemType.getAdapter(RSESystemTypeAdapter.class));
if (adapter != null && adapter.isEnabled(systemType)) {
ISystemProfileManager profileManager = SystemProfileManager.getDefault();
ISystemProfileManager profileManager = RSECorePlugin.getTheSystemProfileManager();
ISystemProfile profile = profileManager.getDefaultPrivateSystemProfile();
String userName = System.getProperty("user.name"); //$NON-NLS-1$
registry.createLocalHost(profile, SystemResources.TERM_LOCAL, userName);
@ -131,10 +131,6 @@ public class RSEUIPlugin extends SystemBasePlugin implements ISystemMessageProvi
private static SystemMessageFile messageFile = null;
private static SystemMessageFile defaultMessageFile = null;
// private SystemType[] allSystemTypes = null;
private SystemRegistryUI _systemRegistryUI = null;
private SystemRegistry _systemRegistry = null;
private Vector viewSuppliers = new Vector();
private SystemViewAdapterFactory svaf; // for fastpath access
private SystemTeamViewResourceAdapterFactory svraf; // for fastpath
@ -440,8 +436,8 @@ public class RSEUIPlugin extends SystemBasePlugin implements ISystemMessageProvi
messageFile = getMessageFile("systemmessages.xml"); //$NON-NLS-1$
defaultMessageFile = getDefaultMessageFile("systemmessages.xml"); //$NON-NLS-1$
ISystemRegistry registry = getSystemRegistryInternal();
RSECorePlugin.getDefault().setSystemRegistry(registry);
//Force load the SystemRegistry - TODO Is this really necessary?
RSECorePlugin.getTheSystemRegistry();
IAdapterManager manager = Platform.getAdapterManager();
@ -461,11 +457,8 @@ public class RSEUIPlugin extends SystemBasePlugin implements ISystemMessageProvi
svraf = new SystemTeamViewResourceAdapterFactory();
svraf.registerWithManager(manager);
InitRSEJob initJob = new InitRSEJob();
initJob.schedule();
}
/**
@ -482,35 +475,38 @@ public class RSEUIPlugin extends SystemBasePlugin implements ISystemMessageProvi
*/
public void restart()
{
if (_systemRegistry != null)
{
if (RSECorePlugin.isTheSystemRegistryActive()) {
ISystemRegistry sr = RSECorePlugin.getTheSystemRegistry();
// disconnect all active connections
disconnectAll(false); // don't save ?
// collapse and flush all nodes in all views
_systemRegistry.fireEvent(new SystemResourceChangeEvent("dummy", ISystemResourceChangeEvents.EVENT_COLLAPSE_ALL, null)); //$NON-NLS-1$
sr.fireEvent(new SystemResourceChangeEvent("dummy", ISystemResourceChangeEvents.EVENT_COLLAPSE_ALL, null)); //$NON-NLS-1$
// allow child classes to override
closeViews();
// clear in-memory settings for all filter pools and subsystems
ISubSystemConfigurationProxy[] proxies = getSystemRegistryInternal().getSubSystemConfigurationProxies();
if (proxies != null)
ISubSystemConfigurationProxy[] proxies = sr.getSubSystemConfigurationProxies();
if (proxies != null) {
for (int idx=0; idx < proxies.length; idx++)
proxies[idx].reset();
}
// clear in-memory settings for all profiles
SystemProfileManager.clearDefault();
// rebuild profiles
SystemStartHere.getSystemProfileManager(); // create folders per profile
RSECorePlugin.getTheSystemProfileManager(); // create folders per profile
// clear in-memory settings for all connections, then restore from disk
_systemRegistry.reset();
((SystemRegistry)sr).reset();
// restore in-memory settings for all filter pools and subsystems
if (proxies != null)
if (proxies != null) {
for (int idx=0; idx < proxies.length; idx++)
proxies[idx].restore();
}
// refresh GUIs
_systemRegistry.fireEvent(new SystemResourceChangeEvent(_systemRegistry, ISystemResourceChangeEvents.EVENT_REFRESH, null));
sr.fireEvent(new SystemResourceChangeEvent(sr, ISystemResourceChangeEvents.EVENT_REFRESH, null));
// allow child classes to override
openViews();
@ -569,9 +565,10 @@ public class RSEUIPlugin extends SystemBasePlugin implements ISystemMessageProvi
*/
protected void disconnectAll(boolean doSave)
{
if (isSystemRegistryActive())
if (RSECorePlugin.isTheSystemRegistryActive())
{
ISubSystemConfigurationProxy[] proxies = getSystemRegistryInternal().getSubSystemConfigurationProxies();
ISystemRegistry sr = RSECorePlugin.getTheSystemRegistry();
ISubSystemConfigurationProxy[] proxies = sr.getSubSystemConfigurationProxies();
if (proxies != null)
{
for (int idx=0; idx < proxies.length; idx++)
@ -605,86 +602,54 @@ public class RSEUIPlugin extends SystemBasePlugin implements ISystemMessageProvi
}
/**
* Returns true if the SystemRegistry has been instantiated already.
* Test if the SystemRegistry has been instantiated already.
* Use this when you don't want to start the system registry as a side effect of retrieving it.
* @return <code>true</code> if the System Registry has been instantiated already.
* @deprecated use {@link RSECorePlugin#isTheSystemRegistryActive()}
*/
public boolean isSystemRegistryActive()
{
return (_systemRegistry != null);
return RSECorePlugin.isTheSystemRegistryActive();
}
/**
* Return the persistence manager used for persisting RSE profiles.
* @return the persistence manager used for persisting RSE profiles
* @deprecated use {@link RSECorePlugin#getThePersistenceManager()}
*/
public IRSEPersistenceManager getPersistenceManager()
{
return RSECorePlugin.getThePersistenceManager();
}
/**
* Return the SystemRegistry singleton.
* Clients should use static @{link getTheSystemRegistry()} instead.
*/
private SystemRegistry getSystemRegistryInternal()
{
if (_systemRegistry == null)
{
String logfilePath = getStateLocation().toOSString();
_systemRegistry = SystemRegistry.getInstance(logfilePath);
ISubSystemConfigurationProxy[] proxies = RSECorePlugin.getDefault().getSubSystemConfigurationProxies();
if (proxies != null)
{
_systemRegistry.setSubSystemConfigurationProxies(proxies);
}
}
return _systemRegistry;
}
/**
* Return the SystemRegistryUI singleton.
* Clients should use static @{link getTheSystemRegistry()} instead.
*/
private SystemRegistryUI getSystemRegistryUIInternal()
{
if (_systemRegistryUI == null)
{
_systemRegistryUI = SystemRegistryUI.getInstance();
}
return _systemRegistryUI;
}
/**
* A static version for convenience
* Returns the master registry singleton.
* @return the SystemRegistryUI singleton.
*/
public static ISystemRegistryUI getTheSystemRegistryUI()
{
return getDefault().getSystemRegistryUIInternal();
return SystemRegistryUI.getInstance();
}
/**
* A static version for convenience
* Returns the master profile manager singleton.
* Return the master profile manager singleton.
* @return the RSE Profile Manager Singleton.
* @deprecated use {@link RSECorePlugin#getTheSystemProfileManager()}
*/
public static ISystemProfileManager getTheSystemProfileManager()
{
return SystemProfileManager.getDefault();
return RSECorePlugin.getTheSystemProfileManager();
}
/**
* A static version for convenience
* Check if the SystemRegistry has been instantiated already.
* Use this when you don't want to start the system registry as a side effect
* of retrieving it.
* @return <code>true</code> if the System Registry has been instantiated already.
* @deprecated use {@link RSECorePlugin#isTheSystemRegistryActive()}
*/
public static boolean isTheSystemRegistryActive()
{
if (inst == null)
return false;
else
return getDefault().isSystemRegistryActive();
public static boolean isTheSystemRegistryActive() {
return RSECorePlugin.isTheSystemRegistryActive();
}
/**

View file

@ -1,5 +1,5 @@
/********************************************************************************
* Copyright (c) 2000, 2007 IBM Corporation. All rights reserved.
* Copyright (c) 2000, 2008 IBM Corporation. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
@ -14,14 +14,23 @@
* David Dykstal (IBM) - moved SystemPreferencesManager to a this package, was in
* the org.eclipse.rse.core package of the UI plugin.
* Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
********************************************************************************/
package org.eclipse.rse.ui;
import java.util.Vector;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.Preferences;
import org.eclipse.rse.core.IRSEPreferenceNames;
import org.eclipse.rse.core.RSECorePlugin;
import org.eclipse.rse.core.events.ISystemModelChangeEvent;
import org.eclipse.rse.core.events.ISystemModelChangeEvents;
import org.eclipse.rse.core.events.ISystemModelChangeListener;
import org.eclipse.rse.core.events.ISystemRemoteChangeEvents;
import org.eclipse.rse.core.events.ISystemResourceChangeEvent;
import org.eclipse.rse.core.events.ISystemResourceChangeEvents;
import org.eclipse.rse.core.events.ISystemResourceChangeListener;
import org.eclipse.rse.core.model.IHost;
import org.eclipse.rse.core.model.ISystemRegistry;
@ -49,6 +58,22 @@ public class SystemPreferencesManager {
private static boolean showProfilePage; // This is not a persistent preference
private static boolean showNewConnectionPrompt; // This is not a persistent preference
/*
* Singleton instance to support listening to model change events
*/
private static SystemPreferencesManager fInstance = new SystemPreferencesManager();
private int fModelChangeListeners = 0;
private ISystemModelChangeListener fModelChangeListener = null;
/*
* Private Constructor to discourage instance creation other than by ourselves.
*/
private SystemPreferencesManager() {
}
/**
* Migrate Preferences from UI Preference Store into Core Preference store
*/
private static void migrateCorePreferences() {
String[] keys = {
IRSEPreferenceNames.ACTIVEUSERPROFILES,
@ -80,11 +105,12 @@ public class SystemPreferencesManager {
migrateCorePreferences();
initDefaultsUI();
savePreferences();
fInstance.startModelChangeListening();
}
private static void initDefaultsUI() {
String showProp = System.getProperty("rse.showNewConnectionPrompt");
//String showProp = System.getProperty("rse.showNewConnectionPrompt");
RSEUIPlugin ui = RSEUIPlugin.getDefault();
Preferences store = ui.getPluginPreferences();
showNewConnectionPrompt= getBooleanProperty("rse.showNewConnectionPrompt", ISystemPreferencesConstants.DEFAULT_SHOWNEWCONNECTIONPROMPT); //$NON-NLS-1$
@ -155,15 +181,13 @@ public class SystemPreferencesManager {
String[] allConnectionNamesOrder = SystemPreferencesManager.getConnectionNamesOrder();
profileName = profileName + "."; //$NON-NLS-1$
int profileNameLength = profileName.length();
Vector v = new Vector();
List l = new ArrayList();
for (int idx = 0; idx < allConnectionNamesOrder.length; idx++)
if (allConnectionNamesOrder[idx].startsWith(profileName)) {
v.addElement(allConnectionNamesOrder[idx].substring(profileNameLength));
}
String[] names = new String[v.size()];
for (int idx = 0; idx < names.length; idx++) {
names[idx] = (String) v.elementAt(idx);
l.add(allConnectionNamesOrder[idx].substring(profileNameLength));
}
String[] names = new String[l.size()];
l.toArray(names);
return names;
}
@ -191,6 +215,9 @@ public class SystemPreferencesManager {
/**
* Sets user's preference for the order of the connection names according to the
* list kept in the system registry.
* This resets any user-specified ordering of profiles since the SystemRegistry
* has no concept of ordered profiles. The hosts inside a profile, though,
* will be ordered according to user preference.
*/
public static void setConnectionNamesOrder() {
ISystemRegistry sr = RSECorePlugin.getTheSystemRegistry();
@ -231,14 +258,14 @@ public class SystemPreferencesManager {
* a restored ordered list of names.
*/
private static String[] resolveOrderPreferenceVersusReality(String[] reality, String[] ordered) {
Vector finalList = new Vector();
List finalList = new ArrayList();
// step 1: include all names from preferences list which do exist in reality...
for (int idx = 0; idx < ordered.length; idx++) {
if (SystemPreferencesManager.find(reality, ordered[idx])) finalList.addElement(ordered[idx]);
if (SystemPreferencesManager.find(reality, ordered[idx])) finalList.add(ordered[idx]);
}
// step 2: add all names in reality which do not exist in preferences list...
for (int idx = 0; idx < reality.length; idx++) {
if (!SystemPreferencesManager.find(ordered, reality[idx])) finalList.addElement(reality[idx]);
if (!SystemPreferencesManager.find(ordered, reality[idx])) finalList.add(reality[idx]);
}
String[] resolved = new String[finalList.size()];
finalList.toArray(resolved);
@ -335,7 +362,7 @@ public class SystemPreferencesManager {
store.setValue(ISystemPreferencesConstants.SHOWFILTERPOOLS, show);
savePreferences();
if (show != prevValue) {
RSECorePlugin.getTheSystemRegistry().setShowFilterPools(show);
RSEUIPlugin.getTheSystemRegistryUI().setShowFilterPools(show);
}
}
@ -437,8 +464,62 @@ public class SystemPreferencesManager {
}
/*
* Private to discourage instance creation.
* Start listening to SystemRegistry model change events
*/
private SystemPreferencesManager() {
private void startModelChangeListening() {
//TODO Register a listener for shutdown, to stop model change listening
boolean alreadyListening;
synchronized(this) {
alreadyListening = (fModelChangeListeners>0);
fModelChangeListeners++;
}
if (!alreadyListening) {
fModelChangeListener = new ModelChangeListener();
RSECorePlugin.getTheSystemRegistry().addSystemModelChangeListener(fModelChangeListener);
}
}
/*
* A listener for SystemRegistry Model Change events
*/
private static class ModelChangeListener implements ISystemModelChangeListener, ISystemResourceChangeListener {
public void systemModelResourceChanged(ISystemModelChangeEvent event) {
int rt = event.getResourceType();
if (rt==ISystemModelChangeEvents.SYSTEM_RESOURCETYPE_CONNECTION) {
switch(event.getEventType()) {
case ISystemModelChangeEvents.SYSTEM_RESOURCE_RENAMED:
case ISystemModelChangeEvents.SYSTEM_RESOURCE_REMOVED:
case ISystemModelChangeEvents.SYSTEM_RESOURCE_ADDED:
//TODO Change order of hosts from affected profile only?
SystemPreferencesManager.setConnectionNamesOrder();
break;
}
} else if (rt==ISystemModelChangeEvents.SYSTEM_RESOURCETYPE_PROFILE) {
switch (event.getEventType()) {
case ISystemModelChangeEvents.SYSTEM_RESOURCE_RENAMED:
case ISystemModelChangeEvents.SYSTEM_RESOURCE_REMOVED:
case ISystemModelChangeEvents.SYSTEM_RESOURCE_CHANGED:
//TODO Change order of hosts from affected profile only?
SystemPreferencesManager.setConnectionNamesOrder();
break;
}
if (event.getEventType()==ISystemModelChangeEvents.SYSTEM_RESOURCE_RENAMED) {
boolean namesQualified = SystemPreferencesManager.getQualifyConnectionNames();
RSEUIPlugin.getTheSystemRegistryUI().setQualifiedHostNames(namesQualified); // causes refresh events to be fired
}
}
}
public void systemResourceChanged(ISystemResourceChangeEvent event) {
if (event.getType()==ISystemResourceChangeEvents.EVENT_MOVE_MANY
&& (event.getSource() instanceof IHost[])
) {
//TODO Change order of hosts from affected profile only?
SystemPreferencesManager.setConnectionNamesOrder();
}
}
}
}

View file

@ -1,5 +1,5 @@
/********************************************************************************
* Copyright (c) 2006, 2007 IBM Corporation and others. All rights reserved.
* Copyright (c) 2006, 2008 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
@ -16,6 +16,8 @@
* David Dykstal (IBM) - [191038] remove getInstance(logFilePath) log file was not used
* initialize correctly in getInstance()
* Martin Oberhuber (Wind River) - [190271] Move ISystemViewInputProvider to Core
* Martin Oberhuber (Wind River) - [] Move SystemRegistry impl into Core
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
********************************************************************************/
package org.eclipse.rse.ui.internal.model;
@ -28,11 +30,17 @@ import org.eclipse.jface.operation.IRunnableContext;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.rse.core.RSECorePlugin;
import org.eclipse.rse.core.events.ISystemResourceChangeEvent;
import org.eclipse.rse.core.events.ISystemResourceChangeEvents;
import org.eclipse.rse.core.events.ISystemResourceChangeListener;
import org.eclipse.rse.core.events.SystemResourceChangeEvent;
import org.eclipse.rse.core.model.IHost;
import org.eclipse.rse.core.model.ISystemProfile;
import org.eclipse.rse.core.model.ISystemRegistry;
import org.eclipse.rse.core.subsystems.ISubSystem;
import org.eclipse.rse.core.subsystems.ISubSystemConfiguration;
import org.eclipse.rse.core.subsystems.ISubSystemConfigurationProxy;
import org.eclipse.rse.internal.core.model.SystemPostableEventNotifier;
import org.eclipse.rse.internal.core.model.SystemRegistry;
import org.eclipse.rse.internal.ui.view.SystemDNDTransferRunnable;
import org.eclipse.rse.internal.ui.view.SystemPerspectiveHelpers;
import org.eclipse.rse.internal.ui.view.SystemView;
@ -41,6 +49,7 @@ import org.eclipse.rse.services.clientserver.messages.SystemMessage;
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
import org.eclipse.rse.ui.ISystemMessages;
import org.eclipse.rse.ui.RSEUIPlugin;
import org.eclipse.rse.ui.SystemPreferencesManager;
import org.eclipse.rse.ui.model.ISystemRegistryUI;
import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.dnd.FileTransfer;
@ -436,6 +445,85 @@ public class SystemRegistryUI implements ISystemRegistryUI {
return scratchpad;
}
// ----------------------------
// USER PREFERENCE METHODS...
// ----------------------------
/**
* Are connection names to be qualified by profile name?
*/
public boolean getQualifiedHostNames()
{
return SystemPreferencesManager.getQualifyConnectionNames();
}
/**
* Set if connection names are to be qualified by profile name
*/
public void setQualifiedHostNames(boolean set)
{
SystemPreferencesManager.setQualifyConnectionNames(set);
IHost[] conns = registry.getHosts();
if (conns != null)
{
for (int idx = 0; idx < conns.length; idx++)
{
//FIXME it seems wrong to fire a RENAME event just because a user preference changed.
//Showing qualified host names or not should be a view-only setting!
registry.fireEvent(new SystemResourceChangeEvent(conns[idx], ISystemResourceChangeEvents.EVENT_RENAME, registry));
}
}
if (SystemPreferencesManager.getShowFilterPools())
{
registry.fireEvent(new SystemResourceChangeEvent(registry, ISystemResourceChangeEvents.EVENT_REFRESH, registry));
}
}
/**
* Reflect the user changing the preference for showing filter pools.
*/
public void setShowFilterPools(boolean show)
{
ISubSystemConfigurationProxy[] proxies = registry.getSubSystemConfigurationProxies();
if (proxies != null)
{
for (int idx = 0; idx < proxies.length; idx++)
{
if (proxies[idx].isSubSystemConfigurationActive())
{
ISubSystemConfiguration factory = proxies[idx].getSubSystemConfiguration();
if ((factory != null) && factory.supportsFilters())
factory.setShowFilterPools(show);
}
}
}
}
/*
* Reflect the user changing the preference for showing filter strings.
*
public void setShowFilterStrings(boolean show)
{
ISubSystemConfigurationProxy[] proxies = registry.getSubSystemConfigurationProxies();
if (proxies != null)
{
for (int idx = 0; idx < proxies.length; idx++)
{
if (proxies[idx].isSubSystemConfigurationActive())
{
SubSystemConfiguration factory = proxies[idx].getSubSystemConfiguration();
if ((factory!=null)&&factory.supportsFilters())
factory.setShowFilterStrings(show);
}
}
}
}*/
/**
* Reflect the user changing the preference for showing new connection prompt
*/
public void setShowNewHostPrompt(boolean show)
{
registry.fireEvent(new SystemResourceChangeEvent(this, ISystemResourceChangeEvents.EVENT_REFRESH, null));
}
// ----------------------------
// RESOURCE EVENT METHODS...
// ----------------------------

View file

@ -1,5 +1,5 @@
/********************************************************************************
* Copyright (c) 2006, 2007 IBM Corporation and others. All rights reserved.
* Copyright (c) 2006, 2008 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
@ -15,6 +15,7 @@
* Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry
* Martin Oberhuber (Wind River) - [189123] Prepare ISystemRegistry for move into non-UI
* Martin Oberhuber (Wind River) - [190271] Move ISystemViewInputProvider to Core
* Martin Oberhuber (Wind River) - [215820] Move SystemRegistry implementation to Core
********************************************************************************/
package org.eclipse.rse.ui.model;
@ -69,6 +70,34 @@ public interface ISystemRegistryUI extends ISystemShellProvider {
*/
public List getSystemClipboardObjects(int srcType);
// ----------------------------
// USER PREFERENCE METHODS...
// ----------------------------
/**
* Are connection names to be qualified by profile name?
*/
public boolean getQualifiedHostNames();
/**
* Set if connection names are to be qualified by profile name
*/
public void setQualifiedHostNames(boolean set);
/**
* Reflect the user changing the preference for showing filter pools.
*/
public void setShowFilterPools(boolean show);
/*
* Reflect the user changing the preference for showing filter strings.
*
public void setShowFilterStrings(boolean show);
*/
/**
* Reflect the user changing the preference for showing new connection prompt
*/
public void setShowNewHostPrompt(boolean show);
// ----------------------------------
// ACTIVE PROGRESS MONITOR METHODS...
// ----------------------------------