package name.abuchen.portfolio.ui.views.settings;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.ToolBar;
import name.abuchen.portfolio.ui.AbstractFinanceView;
import name.abuchen.portfolio.ui.Images;
import name.abuchen.portfolio.ui.Messages;
import name.abuchen.portfolio.ui.PortfolioPart;
public class SettingsView extends AbstractFinanceView
{
public interface Tab
{
CTabItem createTab(CTabFolder folder);
void showAddMenu(Shell shell);
}
private CTabFolder folder;
private int initiallySelectedTab = 0;
@Override
protected String getDefaultTitle()
{
return Messages.LabelSettings;
}
@Override
protected void addButtons(ToolBar toolBar)
{
Action config = new Action()
{
@Override
public void run()
{
CTabItem item = folder.getSelection();
Tab tab = (Tab) item.getData();
tab.showAddMenu(getActiveShell());
}
};
config.setImageDescriptor(Images.PLUS.descriptor());
config.setToolTipText(Messages.MenuSettingsNew);
new ActionContributionItem(config).fill(toolBar, -1);
}
@Override
public void init(PortfolioPart part, Object parameter)
{
super.init(part, parameter);
if (parameter != null && parameter instanceof Integer)
initiallySelectedTab = ((Integer) parameter).intValue();
}
@Override
protected Control createBody(Composite parent)
{
folder = new CTabFolder(parent, SWT.BORDER);
Tab tab = make(BookmarksListTab.class);
CTabItem item = tab.createTab(folder);
item.setData(tab);
tab = make(AttributeListTab.class);
item = tab.createTab(folder);
item.setData(tab);
if (initiallySelectedTab >= 0 && initiallySelectedTab < folder.getItemCount())
folder.setSelection(initiallySelectedTab);
else
folder.setSelection(0);
return folder;
}
}