/*******************************************************************************
* Copyright (c) 2008 Red Hat, Inc.
* 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:
* Kent Sebastian <ksebasti@redhat.com> - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.oprofile.ui.model;
import java.util.Arrays;
import org.eclipse.linuxtools.internal.oprofile.core.model.OpModelEvent;
import org.eclipse.linuxtools.internal.oprofile.core.model.OpModelSession;
import org.eclipse.linuxtools.internal.oprofile.ui.OprofileUiMessages;
import org.eclipse.linuxtools.internal.oprofile.ui.OprofileUiPlugin;
import org.eclipse.swt.graphics.Image;
/**
* Children of events in the view -- sessions containing images/symbols
* for its parent event. Must have a child image. May also have dependent
* images, which are children of the Image in the data model, but are
* displayed as children of the session in the view.
* @since 1.1
*/
public class UiModelSession implements IUiModelElement {
private OpModelSession session; //the node in the data model
private UiModelEvent events[];
//OProfile's default session name
private static final String DEFAULT_SESSION_NAME = "current"; //$NON-NLS-1$
/**
* Constructor to the UiModelSession class
* @param session Oprofile session node in the data model
*/
public UiModelSession(OpModelSession session) {
if (session != null) {
this.session = session;
refreshModel();
}
}
private void refreshModel() {
OpModelEvent dataModelEvents[] = session.getEvents();
events = new UiModelEvent[dataModelEvents.length];
for (int i = 0; i < dataModelEvents.length; i++) {
events[i] = new UiModelEvent(this, dataModelEvents[i]);
}
}
@Override
public String toString() {
return session.getName();
}
/**
* Check if this is Oprofile's default session name
* @return true whether this is Oprofile's default session, false otherwise
*/
public boolean isDefaultSession() {
return session.getName().equalsIgnoreCase(DEFAULT_SESSION_NAME);
}
/** IUiModelElement functions
* Returns the text to display in the tree viewer as required by the label provider.
* @return text Text string describing this element
*/
@Override
public String getLabelText() {
if (session.getName().equals(DEFAULT_SESSION_NAME)){
return OprofileUiMessages.getString("UiModelSession_current"); //$NON-NLS-1$
}
return toString();
}
/**
* Returns the children of this element.
* @return An array of child elements
*/
@Override
public IUiModelElement[] getChildren() {
if (UiModelRoot.SortType.EVENT == UiModelRoot.getSortingType()) {
Arrays.sort(events, UiModelSorting.getInstance());
return events;
}
return events;
}
/**
* Returns if the element has any children.
* @return true if the element has children, false otherwise
*/
@Override
public boolean hasChildren() {
return (events == null || events.length == 0 ? false : true);
}
/**
* Returns the element's parent.
* @return parent The parent element
*/
@Override
public IUiModelElement getParent() {
return null;
}
/**
* Returns the Image to display next to the text in the tree viewer.
* @return an Image object of the icon
*/
@Override
public Image getLabelImage() {
return OprofileUiPlugin.getImageDescriptor(OprofileUiPlugin.SESSION_ICON).createImage();
}
}