/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.datamanagement.browser.spi; import java.io.IOException; import java.io.ObjectInputStream; import java.io.Serializable; import org.eclipse.swt.graphics.Image; /** * An extension interface for builders that generate the GUI subtrees of history data items. * * @author Robert Mischke * @author Doreen Seider */ public interface ComponentHistoryDataItemSubtreeBuilder { /** * * @return identifier (as returned by ComponentHistoryDataItem#getIdentifier) of all * history data items this builder implementation can handle. Regular expressions are allowed. */ String[] getSupportedHistoryDataItemIdentifier(); /** * This interface method delegates object deserialization back to the builder implementation. * This causes deserialization to take place within the classloader context of the builder * implementation, which has access to the history object class definitions. Without this, the * calling UI bundle would require a "Dynamic-PackageImport: *", which is undesirable. * * @param ois the {@link ObjectInputStream} to read from * @return the deserialized history object * @throws IOException if stream reading fails * @throws ClassNotFoundException if the read object could not be instantiated */ Serializable deserializeHistoryDataItem(ObjectInputStream ois) throws IOException, ClassNotFoundException; /** * Generate the initial subtree elements for the given history object. Currently, no incremental * building is supported, so this method must create the whole subtree at once; this may change * in the future. * * @param historyDataItem the history object * @param parent the parent node to construct the subtree under */ void buildInitialHistoryDataItemSubtree(Serializable historyDataItem, DMBrowserNode parent); /** * @param historyDataItemIdentifier of the history data item * @return icon of the component related to the history data item with the given identifier. If <code>null</code> default image is taken */ Image getComponentIcon(String historyDataItemIdentifier); }