package name.abuchen.portfolio.ui.util.viewers;
import java.io.IOException;
import java.util.List;
import org.eclipse.swt.widgets.Shell;
import com.ibm.icu.text.MessageFormat;
import name.abuchen.portfolio.snapshot.ReportingPeriod;
import name.abuchen.portfolio.ui.dialogs.ReportingPeriodDialog;
public class ReportingPeriodColumnOptions implements Column.Options<ReportingPeriod>
{
private String columnLabel;
private List<ReportingPeriod> defaultOptions;
public ReportingPeriodColumnOptions(String columnLabel, List<ReportingPeriod> defaultOptions)
{
this.columnLabel = columnLabel;
this.defaultOptions = defaultOptions;
}
@Override
public List<ReportingPeriod> getOptions()
{
return defaultOptions;
}
@Override
public ReportingPeriod valueOf(String s)
{
try
{
return ReportingPeriod.from(s);
}
catch (IOException e)
{
throw new IllegalArgumentException(e);
}
}
@Override
public String toString(ReportingPeriod option)
{
return option.getCode();
}
@Override
public String getColumnLabel(ReportingPeriod option)
{
return MessageFormat.format(columnLabel, option.toString());
}
@Override
public String getMenuLabel(ReportingPeriod option)
{
return option.toString();
}
@Override
public String getDescription(ReportingPeriod option)
{
return null;
}
@Override
public boolean canCreateNewOptions()
{
return true;
}
@Override
public ReportingPeriod createNewOption(Shell shell)
{
ReportingPeriodDialog dialog = new ReportingPeriodDialog(shell, null);
if (dialog.open() == ReportingPeriodDialog.OK)
{
ReportingPeriod p = dialog.getReportingPeriod();
defaultOptions.add(p);
return p;
}
return null;
}
}