1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-03 14:25:37 +02:00

Automatically expand Daytime subsystem on connect

This commit is contained in:
Martin Oberhuber 2006-07-18 10:34:07 +00:00
parent fc320160ed
commit 66b4cc7750
2 changed files with 28 additions and 12 deletions

View file

@ -22,7 +22,6 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.osgi.util.NLS;
import org.eclipse.rse.core.subsystems.AbstractConnectorService;
import org.eclipse.rse.core.subsystems.CommunicationsEvent;
import org.eclipse.rse.examples.daytime.DaytimeResources;
import org.eclipse.rse.examples.daytime.service.DaytimeService;
import org.eclipse.rse.examples.daytime.service.IDaytimeService;

View file

@ -12,6 +12,7 @@
package org.eclipse.rse.examples.daytime.subsystems;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.widgets.Display;
import org.eclipse.rse.core.subsystems.IConnectorService;
import org.eclipse.rse.core.subsystems.SubSystem;
@ -19,7 +20,10 @@ import org.eclipse.rse.examples.daytime.model.DaytimeResource;
import org.eclipse.rse.examples.daytime.service.IDaytimeService;
import org.eclipse.rse.model.IHost;
import org.eclipse.rse.model.ISystemMessageObject;
import org.eclipse.rse.model.ISystemRegistry;
import org.eclipse.rse.model.ISystemResourceChangeEvents;
import org.eclipse.rse.model.SystemMessageObject;
import org.eclipse.rse.model.SystemResourceChangeEvent;
import org.eclipse.rse.services.clientserver.messages.SystemMessage;
import org.eclipse.rse.ui.ISystemMessages;
import org.eclipse.rse.ui.RSEUIPlugin;
@ -38,7 +42,16 @@ public class DaytimeSubSystem extends SubSystem {
}
public void initializeSubSystem(IProgressMonitor monitor) {
// nothing to do
//This is called after connect - expand the daytime node.
//May be called in worker thread.
//TODO find a more elegant solution for expanding the item, e.g. use implicit connect like filters
final ISystemRegistry sr = RSEUIPlugin.getTheSystemRegistry();
final SystemResourceChangeEvent event = new SystemResourceChangeEvent(this, ISystemResourceChangeEvents.EVENT_SELECT_EXPAND, null);
//TODO bug 150919: postEvent() should not be necessary asynchronously
//sr.postEvent(event);
Display.getDefault().asyncExec(new Runnable() {
public void run() { sr.postEvent(event); }
});
}
public boolean hasChildren() {
@ -50,16 +63,20 @@ public class DaytimeSubSystem extends SubSystem {
}
public Object[] getChildren() {
try {
String daytime = fDaytimeService.getTimeOfDay();
DaytimeResource node = new DaytimeResource(this);
node.setDaytime(daytime);
return new Object[] { node };
} catch(Exception e) {
SystemMessage msg = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_CONNECT_FAILED);
msg.makeSubstitution(getHostName(), e);
SystemMessageObject msgobj = new SystemMessageObject(msg, ISystemMessageObject.MSGTYPE_ERROR,this);
return new Object[] { msgobj };
if (isConnected()) {
try {
String daytime = fDaytimeService.getTimeOfDay();
DaytimeResource node = new DaytimeResource(this);
node.setDaytime(daytime);
return new Object[] { node };
} catch(Exception e) {
SystemMessage msg = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_CONNECT_FAILED);
msg.makeSubstitution(getHostName(), e);
SystemMessageObject msgobj = new SystemMessageObject(msg, ISystemMessageObject.MSGTYPE_ERROR,this);
return new Object[] { msgobj };
}
} else {
return new Object[0];
}
}