package org.jboss.tools.drools.reddeer.view;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.LinkedList;
import java.util.List;
import org.apache.log4j.Logger;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.PlatformUI;
import org.jboss.reddeer.swt.api.TreeItem;
import org.jboss.reddeer.swt.impl.toolbar.DefaultToolItem;
import org.jboss.reddeer.swt.impl.tree.DefaultTree;
import org.jboss.reddeer.core.util.Display;
import org.jboss.reddeer.core.util.ResultRunnable;
import org.jboss.reddeer.workbench.impl.view.WorkbenchView;
public class AuditView extends WorkbenchView {
private static final Logger LOGGER = Logger.getLogger(AuditView.class);
public AuditView() {
super("Drools", "Audit");
}
public void openLog(final String logLocation) {
// Using the toolbar, the file dialog is opened
// new DefaultToolItem("Open Log").click();
// Retrieves the AuditView object from all opened objects
final IViewPart part = Display.syncExec(new ResultRunnable<IViewPart>() {
public IViewPart run() {
for (IViewReference ref : PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
.getViewReferences()) {
if (ref.getId().contains("AuditView")) {
return ref.getView(false);
}
}
return null;
}
});
// call the setLogFile method using reflection (to avoid Drools plugin dependency)
if (part != null) {
Display.syncExec(new Runnable() {
public void run() {
try {
Method m = part.getClass().getMethod("setLogFile", String.class);
m.invoke(part, logLocation);
} catch (NoSuchMethodException ex) {
LOGGER.error(ex);
} catch (InvocationTargetException ex) {
LOGGER.error(ex);
} catch (IllegalAccessException ex) {
LOGGER.error(ex);
}
}
});
}
}
public void refreshLog() {
new DefaultToolItem("Refresh Log").click();
}
public void clearLog() {
new DefaultToolItem("Clear Log").click();
}
public List<String> getEvents() {
List<String> result = new LinkedList<String>();
for (TreeItem item : new DefaultTree().getItems()) {
result.add(item.getText());
}
return result;
}
}