use of org.pentaho.xul.swt.tab.TabItem in project pentaho-kettle by pentaho.
the class SpoonJobDelegate method addJobGraph.
public void addJobGraph(JobMeta jobMeta) {
boolean added = addJob(jobMeta);
if (added) {
// See if there already is a tab for this graph with the short default name.
// If there is, set that one to show the location as well.
// If not, simply add it without
// If no, add it
// If yes, select that tab
//
boolean showLocation = false;
boolean addTab = true;
String tabName = spoon.delegates.tabs.makeTabName(jobMeta, false);
TabMapEntry tabEntry = spoon.delegates.tabs.findTabMapEntry(tabName, ObjectType.JOB_GRAPH);
if (tabEntry != null) {
// We change the already loaded job to also show the location.
//
showLocation = true;
tabEntry.setShowingLocation(true);
String newTabName = spoon.delegates.tabs.makeTabName(tabEntry.getObject().getMeta(), true);
tabEntry.getTabItem().setText(newTabName);
// Try again, including the location of the object...
//
tabName = spoon.delegates.tabs.makeTabName(jobMeta, true);
tabEntry = spoon.delegates.tabs.findTabMapEntry(tabName, ObjectType.JOB_GRAPH);
if (tabEntry != null) {
// Already loaded, simply select the tab item in question...
//
addTab = false;
}
}
if (addTab) {
JobGraph jobGraph = new JobGraph(spoon.tabfolder.getSwtTabset(), spoon, jobMeta);
PropsUI props = PropsUI.getInstance();
TabItem tabItem = new TabItem(spoon.tabfolder, tabName, tabName, props.getSashWeights());
String toolTipText = BaseMessages.getString(PKG, "Spoon.TabJob.Tooltip", spoon.delegates.tabs.makeTabName(jobMeta, showLocation));
if (!Utils.isEmpty(jobMeta.getFilename())) {
toolTipText += Const.CR + Const.CR + jobMeta.getFilename();
}
tabItem.setToolTipText(toolTipText);
tabItem.setImage(GUIResource.getInstance().getImageJobGraph());
tabItem.setControl(jobGraph);
// OK, also see if we need to open a new history window.
if (jobMeta.getJobLogTable().getDatabaseMeta() != null && !Utils.isEmpty(jobMeta.getJobLogTable().getTableName())) {
jobGraph.addAllTabs();
jobGraph.extraViewTabFolder.setSelection(jobGraph.jobHistoryDelegate.getJobHistoryTab());
}
String versionLabel = jobMeta.getObjectRevision() == null ? null : jobMeta.getObjectRevision().getName();
tabEntry = new TabMapEntry(tabItem, jobMeta.getFilename(), jobMeta.getName(), jobMeta.getRepositoryDirectory(), versionLabel, jobGraph, ObjectType.JOB_GRAPH);
tabEntry.setShowingLocation(showLocation);
spoon.delegates.tabs.addTab(tabEntry);
}
int idx = spoon.tabfolder.indexOf(tabEntry.getTabItem());
// keep the focus on the graph
spoon.tabfolder.setSelected(idx);
spoon.setUndoMenu(jobMeta);
spoon.enableMenus();
} else {
TabMapEntry tabEntry = spoon.delegates.tabs.findTabMapEntry(jobMeta);
if (tabEntry != null) {
int idx = spoon.tabfolder.indexOf(tabEntry.getTabItem());
// keep the focus on the graph
spoon.tabfolder.setSelected(idx);
// keep the focus on the graph
spoon.tabfolder.setSelected(idx);
spoon.setUndoMenu(jobMeta);
spoon.enableMenus();
}
}
}
use of org.pentaho.xul.swt.tab.TabItem in project pentaho-kettle by pentaho.
the class SpoonSlaveDelegate method addSpoonSlave.
public void addSpoonSlave(SlaveServer slaveServer) {
TabSet tabfolder = spoon.tabfolder;
// See if there is a SpoonSlave for this slaveServer...
String tabName = spoon.delegates.tabs.makeSlaveTabName(slaveServer);
TabMapEntry tabMapEntry = spoon.delegates.tabs.findTabMapEntry(tabName, ObjectType.SLAVE_SERVER);
if (tabMapEntry == null) {
SpoonSlave spoonSlave = new SpoonSlave(tabfolder.getSwtTabset(), SWT.NONE, spoon, slaveServer);
PropsUI props = PropsUI.getInstance();
TabItem tabItem = new TabItem(tabfolder, tabName, tabName, props.getSashWeights());
tabItem.setToolTipText("Status of slave server : " + slaveServer.getName() + " : " + slaveServer.getServerAndPort());
tabItem.setControl(spoonSlave);
tabMapEntry = new TabMapEntry(tabItem, null, tabName, null, null, spoonSlave, ObjectType.SLAVE_SERVER);
spoon.delegates.tabs.addTab(tabMapEntry);
}
int idx = tabfolder.indexOf(tabMapEntry.getTabItem());
tabfolder.setSelected(idx);
}
use of org.pentaho.xul.swt.tab.TabItem in project pentaho-kettle by pentaho.
the class SpoonTabsDelegate method addSpoonBrowser.
public boolean addSpoonBrowser(String name, String urlString, boolean isURL, LocationListener listener, Map<String, Runnable> functions, boolean showControls) {
TabSet tabfolder = spoon.tabfolder;
try {
// OK, now we have the HTML, create a new browser tab.
// See if there already is a tab for this browser
// If no, add it
// If yes, select that tab
//
TabMapEntry tabMapEntry = findTabMapEntry(name, ObjectType.BROWSER);
if (tabMapEntry == null) {
CTabFolder cTabFolder = tabfolder.getSwtTabset();
final SpoonBrowser browser = new SpoonBrowser(cTabFolder, spoon, urlString, isURL, showControls, listener);
browser.getBrowser().addOpenWindowListener(new OpenWindowListener() {
@Override
public void open(WindowEvent event) {
if (event.required) {
event.browser = browser.getBrowser();
}
}
});
if (functions != null) {
for (String functionName : functions.keySet()) {
new BrowserFunction(browser.getBrowser(), functionName) {
public Object function(Object[] arguments) {
functions.get(functionName).run();
return null;
}
};
}
}
new BrowserFunction(browser.getBrowser(), "genericFunction") {
public Object function(Object[] arguments) {
try {
ExtensionPointHandler.callExtensionPoint(log, KettleExtensionPoint.SpoonBrowserFunction.id, arguments);
} catch (KettleException ignored) {
}
return null;
}
};
new BrowserFunction(browser.getBrowser(), "openURL") {
public Object function(Object[] arguments) {
Program.launch(arguments[0].toString());
return null;
}
};
PropsUI props = PropsUI.getInstance();
TabItem tabItem = new TabItem(tabfolder, name, name, props.getSashWeights());
tabItem.setImage(GUIResource.getInstance().getImageLogoSmall());
tabItem.setControl(browser.getComposite());
tabMapEntry = new TabMapEntry(tabItem, isURL ? urlString : null, name, null, null, browser, ObjectType.BROWSER);
tabMap.add(tabMapEntry);
}
int idx = tabfolder.indexOf(tabMapEntry.getTabItem());
// keep the focus on the graph
tabfolder.setSelected(idx);
return true;
} catch (Throwable e) {
boolean ok = false;
if (isURL) {
// Retry to show the welcome page in an external browser.
//
Status status = Launch.openURL(urlString);
ok = status.equals(Status.Success);
}
if (!ok) {
// Log an error
//
log.logError("Unable to open browser tab", e);
return false;
} else {
return true;
}
}
}
use of org.pentaho.xul.swt.tab.TabItem in project pentaho-kettle by pentaho.
the class MainSpoonPerspective method getActiveMeta.
@Override
public EngineMetaInterface getActiveMeta() {
if (tabfolder == null) {
return null;
}
TabItem tabItem = tabfolder.getSelected();
if (tabItem == null) {
return null;
}
// What transformation is in the active tab?
// TransLog, TransGraph & TransHist contain the same transformation
//
TabMapEntry mapEntry = ((Spoon) SpoonFactory.getInstance()).delegates.tabs.getTab(tabfolder.getSelected());
EngineMetaInterface meta = null;
if (mapEntry != null) {
if (mapEntry.getObject() instanceof TransGraph) {
meta = (mapEntry.getObject()).getMeta();
}
if (mapEntry.getObject() instanceof JobGraph) {
meta = (mapEntry.getObject()).getMeta();
}
}
return meta;
}
Aggregations