/**********************************************************************
* Copyright (c) 2012, 2014 Ericsson
*
* 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
*
* Contributors:
* Bernd Hufmann - Initial API and implementation
**********************************************************************/
package org.eclipse.tracecompass.internal.lttng2.control.ui.views.model;
import java.util.List;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.swt.graphics.Image;
import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState;
import org.eclipse.tracecompass.internal.lttng2.control.ui.views.service.ILttngControlService;
/**
* <p>
* Interface for trace control components that can be displayed in the
* trace control tree viewer.
* </p>
*
* @author Bernd Hufmann
*/
public interface ITraceControlComponent extends IAdaptable {
// ------------------------------------------------------------------------
// Accessors
// ------------------------------------------------------------------------
/**
* @return the name of the component
*/
String getName();
/**
* Sets the name of the component to the given value.
* @param name - name to set
*/
void setName(String name);
/**
* @return the image representing the component.
*/
Image getImage();
/**
* Sets the image path of the component.
* @param path - path to the image location
*/
void setImage(String path);
/**
* Sets the image the component.
* @param image - image to the image location
*/
void setImage(Image image);
/**
* @return tool tip with information about the component.
*/
String getToolTip();
/**
* Sets the tool tip with information about the component.
* @param toolTip - the tool tip to set.
*/
void setToolTip(String toolTip);
/**
* @return the node's connection state
*/
TargetNodeState getTargetNodeState();
/**
* Sets the node's connection state.
* @param state - the state to set
*/
void setTargetNodeState(TargetNodeState state);
/**
* @return returns the parent component.
*/
ITraceControlComponent getParent();
/**
* Sets the parent component.
* @param parent - the parent to set.
*/
void setParent(ITraceControlComponent parent);
/**
* @return the children components
*/
ITraceControlComponent[] getChildren();
/**
* Sets the children components.
* @param children - the children to set.
*/
void setChildren(List<ITraceControlComponent> children);
/**
* Returns the child component with given name.
* @param name - name of child to find.
* @return child component or null.
*/
ITraceControlComponent getChild(String name);
/**
* Gets children for given class type.
* @param clazz - a class type to get
* @return list of trace control components matching given class type.
*/
List<ITraceControlComponent> getChildren(Class<? extends ITraceControlComponent> clazz);
/**
* @return the LTTng control service implementation.
*/
ILttngControlService getControlService();
/**
* Sets the LTTng control service implementation.
* @param service - the service to set.
*/
void setControlService(ILttngControlService service);
// ------------------------------------------------------------------------
// Operations
// ------------------------------------------------------------------------
/**
* Dispose any resource.
*/
void dispose();
/**
* Adds a child component.
* @param component - child to add.
*/
void addChild(ITraceControlComponent component);
/**
* Removes the given child component.
* @param component - the child to remove.
*/
void removeChild(ITraceControlComponent component);
/**
* Removes all children.
*/
void removeAllChildren();
/**
* Checks if child with given name exists.
* @param name - child name to search for.
* @return - true if exists else false.
*/
boolean containsChild(String name);
/**
* Checks for children.
* @return true if one or more children exist else false
*/
boolean hasChildren();
/**
* Adds a component listener for notification of component changes.
* @param listener - listener interface implementation to add.
*/
void addComponentListener(ITraceControlComponentChangedListener listener);
/**
* Removes a component listener for notification of component changes.
* @param listener - listener interface implementation to remove.
*/
void removeComponentListener(ITraceControlComponentChangedListener listener);
/**
* Notifies listeners about the addition of a child.
* @param parent - the parent where the child was added.
* @param component - the child that was added.
*/
void fireComponentAdded(ITraceControlComponent parent, ITraceControlComponent component);
/**
* Notifies listeners about the removal of a child.
* @param parent - the parent where the child was removed.
* @param component - the child that was removed.
*/
void fireComponentRemoved(ITraceControlComponent parent, ITraceControlComponent component);
/**
* Notifies listeners about the change of a component.
* @param component - the component that was changed.
*/
void fireComponentChanged(ITraceControlComponent component);
}