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

[228577] [rseterminal] Clean up RSE Terminal impl

This commit is contained in:
Martin Oberhuber 2008-05-05 17:49:59 +00:00
parent c26154c003
commit 9a75a4b103

View file

@ -13,7 +13,6 @@
package org.eclipse.rse.subsystems.terminals.core; package org.eclipse.rse.subsystems.terminals.core;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.rse.core.RSECorePlugin; import org.eclipse.rse.core.RSECorePlugin;
@ -34,7 +33,7 @@ public final class TerminalServiceSubSystem extends SubSystem implements
protected ITerminalService _hostService = null; protected ITerminalService _hostService = null;
private ArrayList children; private ArrayList children = new ArrayList();
public class Refresh implements Runnable { public class Refresh implements Runnable {
private TerminalServiceSubSystem _ss; private TerminalServiceSubSystem _ss;
@ -53,14 +52,12 @@ public final class TerminalServiceSubSystem extends SubSystem implements
protected TerminalServiceSubSystem(IHost host, protected TerminalServiceSubSystem(IHost host,
IConnectorService connectorService) { IConnectorService connectorService) {
super(host, connectorService); super(host, connectorService);
children = new ArrayList();
} }
public TerminalServiceSubSystem(IHost host, public TerminalServiceSubSystem(IHost host,
IConnectorService connectorService, ITerminalService hostService) { IConnectorService connectorService, ITerminalService hostService) {
super(host, connectorService); super(host, connectorService);
_hostService = hostService; _hostService = hostService;
children = new ArrayList();
} }
public ITerminalService getTerminalService() { public ITerminalService getTerminalService() {
@ -79,47 +76,41 @@ public final class TerminalServiceSubSystem extends SubSystem implements
} }
public void removeChild(TerminalElement element) { public void removeChild(TerminalElement element) {
synchronized (children) { if(element!=null){
if (children.size() > 0) { synchronized (children) {
children.remove(element); children.remove(element);
} }
} Display.getDefault().asyncExec(new Refresh(this));
Display.getDefault().asyncExec(new Refresh(this)); }
} }
public void removeChild(String terminalTitle) { public void removeChild(String terminalTitle) {
if (children.size() > 0) { removeChild(getChild(terminalTitle));
TerminalElement element = getChild(terminalTitle);
if (element != null){
synchronized (children) {
children.remove(element);
}
Display.getDefault().asyncExec(new Refresh(this));
}
}
} }
public TerminalElement getChild(String terminalTitle) { public TerminalElement getChild(String terminalTitle) {
if (children != null) { Object[] children = getChildren();
Iterator iterator = children.iterator(); for (int i = 0, e = children.length; i < e; i++) {
while (iterator.hasNext()){ TerminalElement element = (TerminalElement)children[i];
TerminalElement element = (TerminalElement)iterator.next(); if (element.getName().equals(terminalTitle))
if (element.getName().equals(terminalTitle)) return element;
return element;
}
} }
return null; return null;
} }
public Object[] getChildren() { public Object[] getChildren() {
if (children != null) Object[] result;
return children.toArray(); synchronized (children) {
return null; result = (Object[]) children
.toArray(new Object[children.size()]);
}
return result;
} }
public boolean hasChildren() { public boolean hasChildren() {
if (children != null && children.size() > 0) synchronized (children) {
return true; if (children.size() > 0)
return false; return true;
return false;
}
} }
public void setTerminalService(ITerminalService service) { public void setTerminalService(ITerminalService service) {
@ -151,21 +142,20 @@ public final class TerminalServiceSubSystem extends SubSystem implements
return true; return true;
} }
public void cancelAllTerminals() { public void cancelAllTerminals() {
if (children == null || children.size() == 0) if (children.size() == 0)
return; return;
Object[] terminals = getChildren();
for (int i = children.size() - 1; i >= 0; i--) { for (int i = terminals.length-1; i >= 0; i--) {
TerminalElement element = (TerminalElement) children.get(i); TerminalElement element = (TerminalElement)terminals[i];
try { try {
removeTerminalElement(element); removeTerminalElement(element);
} catch (Exception e) { } catch (Exception e) {
RSECorePlugin.getDefault().getLogger().logError("Error removing terminal", e); //$NON-NLS-1$ RSECorePlugin.getDefault().getLogger().logError("Error removing terminal", e); //$NON-NLS-1$
} }
} }
synchronized(children){
children.clear(); children.clear();
}
Display.getDefault().asyncExec(new Refresh(this)); Display.getDefault().asyncExec(new Refresh(this));
} }