package org.gudy.azureus2.ui.swt.views.table.impl;
import java.util.Map;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.util.IndentWriter;
import org.gudy.azureus2.ui.swt.views.AbstractIView;
import org.gudy.azureus2.ui.swt.views.IViewExtension;
import org.gudy.azureus2.ui.swt.views.table.TableViewSWT;
import com.aelitis.azureus.ui.common.ToolBarEnabler;
public abstract class TableViewTab<DATASOURCETYPE>
extends AbstractIView
implements IViewExtension, ToolBarEnabler
{
private TableViewSWT<DATASOURCETYPE> tv;
private Object parentDataSource;
private final String propertiesPrefix;
private Composite composite;
public TableViewTab(String propertiesPrefix) {
this.propertiesPrefix = propertiesPrefix;
}
public TableViewSWT<DATASOURCETYPE> getTableView() {
return tv;
}
public final void initialize(Composite composite) {
tv = initYourTableView();
if (parentDataSource != null) {
tv.setParentDataSource(parentDataSource);
}
Composite parent = initComposite(composite);
tv.initialize(parent);
if (parent != composite) {
this.composite = composite;
} else {
this.composite = tv.getComposite();
}
tableViewTabInitComplete();
}
public void tableViewTabInitComplete() {
}
public Composite initComposite(Composite composite) {
return composite;
}
public abstract TableViewSWT<DATASOURCETYPE> initYourTableView();
public final void dataSourceChanged(Object newDataSource) {
this.parentDataSource = newDataSource;
if (tv != null) {
tv.setParentDataSource(newDataSource);
}
}
public final void refresh() {
if (tv != null) {
tv.refreshTable(false);
}
}
// @see org.gudy.azureus2.ui.swt.views.AbstractIView#delete()
public final void delete() {
if (tv != null) {
tv.delete();
}
super.delete();
}
// @see org.gudy.azureus2.ui.swt.views.AbstractIView#getData()
public final String getData() {
return getPropertiesPrefix() + ".title.short";
}
public final String getFullTitle() {
return MessageText.getString(getPropertiesPrefix() + ".title.full");
}
// @see org.gudy.azureus2.ui.swt.views.AbstractIView#generateDiagnostics(org.gudy.azureus2.core3.util.IndentWriter)
public final void generateDiagnostics(IndentWriter writer) {
if (tv != null) {
tv.generate(writer);
}
}
// @see org.gudy.azureus2.ui.swt.views.AbstractIView#getComposite()
public Composite getComposite() {
return composite;
}
public boolean toolBarItemActivated(String itemKey) {
if (itemKey.equals("editcolumns")) {
if (tv instanceof TableViewSWTImpl) {
((TableViewSWTImpl)tv).showColumnEditor();
return true;
}
}
return false;
}
public void refreshToolBar(Map<String, Boolean> list) {
list.put("editcolumns", true);
}
public String getPropertiesPrefix() {
return propertiesPrefix;
}
public Menu getPrivateMenu() {
return null;
}
public void viewActivated() {
// cheap hack.. calling isVisible freshens table's visible status (and
// updates subviews)
if (tv instanceof TableViewSWTImpl) {
((TableViewSWTImpl)tv).isVisible();
}
}
public void viewDeactivated() {
if (tv instanceof TableViewSWTImpl) {
((TableViewSWTImpl)tv).isVisible();
}
}
}