diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/AbstractFinanceView.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/AbstractFinanceView.java index 8c6cf25b1c..fe717f4c6d 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/AbstractFinanceView.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/AbstractFinanceView.java @@ -47,6 +47,11 @@ protected final void updateTitle() this.title.setText(getTitle()); } + protected final void updateTitle(String title) + { + this.title.setText(title); + } + /** called when some other view modifies the model */ public void notifyModelUpdated() {} diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/UIConstants.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/UIConstants.java index d843c36b92..223eda461f 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/UIConstants.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/UIConstants.java @@ -21,6 +21,11 @@ interface Log String CREATED = "errorlog/created"; //$NON-NLS-1$ String CLEARED = "errorlog/cleared"; //$NON-NLS-1$ } + + interface Configuration + { + String PICKED = "configuration/picked"; //$NON-NLS-1$ + } } interface File diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/ConfigurationStore.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/ConfigurationStore.java index e4c4c44022..a7b280336f 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/ConfigurationStore.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/ConfigurationStore.java @@ -5,6 +5,8 @@ import name.abuchen.portfolio.model.Client; import name.abuchen.portfolio.ui.Messages; +import name.abuchen.portfolio.ui.PortfolioPlugin; +import name.abuchen.portfolio.ui.UIConstants; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IMenuListener; @@ -202,6 +204,7 @@ private void createNew(Configuration template) preferences.setValue(identifier + ACTIVE, configurations.size() - 1); listener.onConfigurationPicked(active.getData()); + PortfolioPlugin.getDefault().postEvent(UIConstants.Event.Configuration.PICKED, active.getName()); } private void rename(Configuration config) @@ -214,6 +217,7 @@ private void rename(Configuration config) config.setName(dlg.getValue()); client.setProperty(identifier + '$' + configurations.indexOf(config), config.serialize()); + PortfolioPlugin.getDefault().postEvent(UIConstants.Event.Configuration.PICKED, active.getName()); } private void delete(Configuration config) @@ -228,6 +232,7 @@ private void delete(Configuration config) active = configurations.get(0); storeConfigurations(); listener.onConfigurationPicked(active.getData()); + PortfolioPlugin.getDefault().postEvent(UIConstants.Event.Configuration.PICKED, active.getName()); } private void activate(Configuration config) @@ -236,6 +241,7 @@ private void activate(Configuration config) active = config; preferences.setValue(identifier + ACTIVE, configurations.indexOf(config)); listener.onConfigurationPicked(config.getData()); + PortfolioPlugin.getDefault().postEvent(UIConstants.Event.Configuration.PICKED, active.getName()); } public void updateActive(String data) @@ -291,6 +297,8 @@ private void loadConfigurations() // make sure on configuration is active if (active == null) active = configurations.get(0); + + PortfolioPlugin.getDefault().postEvent(UIConstants.Event.Configuration.PICKED, active.getName()); } private void storeConfigurations() diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/ShowHideColumnHelper.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/ShowHideColumnHelper.java index 8815a02831..c1514ac6f0 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/ShowHideColumnHelper.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/ShowHideColumnHelper.java @@ -241,7 +241,6 @@ public void create(Column column, Object option, Integer direction, int width) private static final Pattern CONFIG_PATTERN = Pattern.compile("^([^=]*)=(?:(\\d*)\\|)?(?:(\\d*)\\$)?(\\d*)$"); //$NON-NLS-1$ private String identifier; - private boolean isUserConfigured = false; private List columns = new ArrayList(); private Map id2column = new HashMap(); @@ -527,11 +526,6 @@ private void doRemoveGroup(String group) } } - public boolean isUserConfigured() - { - return isUserConfigured; - } - public void addColumn(Column column) { // columns used to be identified by index only @@ -546,11 +540,7 @@ public void createColumns() { createFromColumnConfig(); - if (policy.getColumnCount() > 0) - { - isUserConfigured = true; - } - else + if (policy.getColumnCount() == 0) { for (Column column : columns) { diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/ChartConfigurator.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/ChartConfigurator.java index 01d5ff5130..5f1f03115e 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/ChartConfigurator.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/ChartConfigurator.java @@ -235,6 +235,7 @@ public void configure(IBarSeries series) } } + @FunctionalInterface public interface Listener { void onUpdate(); diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/DividendsPerformanceView.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/DividendsPerformanceView.java index b6115ed860..e74221b8bc 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/DividendsPerformanceView.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/DividendsPerformanceView.java @@ -3,6 +3,8 @@ import java.util.Collections; import java.util.Date; +import javax.inject.Inject; + import name.abuchen.portfolio.model.AccountTransaction; import name.abuchen.portfolio.model.PortfolioTransaction; import name.abuchen.portfolio.model.Security; @@ -17,6 +19,7 @@ import name.abuchen.portfolio.snapshot.security.SecurityPerformanceSnapshot; import name.abuchen.portfolio.ui.Messages; import name.abuchen.portfolio.ui.PortfolioPlugin; +import name.abuchen.portfolio.ui.UIConstants; import name.abuchen.portfolio.ui.dnd.SecurityDragListener; import name.abuchen.portfolio.ui.dnd.SecurityTransfer; import name.abuchen.portfolio.ui.util.Column; @@ -36,6 +39,8 @@ import name.abuchen.portfolio.ui.views.columns.NoteColumn; import name.abuchen.portfolio.ui.views.columns.TaxonomyColumn; +import org.eclipse.e4.core.di.annotations.Optional; +import org.eclipse.e4.ui.di.UIEventTopic; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.IMenuListener; @@ -71,6 +76,13 @@ protected String getTitle() return Messages.LabelSecurityPerformance; } + @Inject + @Optional + private void onConfigurationPicked(@UIEventTopic(UIConstants.Event.Configuration.PICKED) String name) + { + updateTitle(Messages.LabelSecurityPerformance + " (" + name + ")"); //$NON-NLS-1$ //$NON-NLS-2$); + } + @Override protected void addButtons(ToolBar toolBar) { diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/PerformanceChartView.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/PerformanceChartView.java index b10c401fc1..feaaaa4f24 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/PerformanceChartView.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/PerformanceChartView.java @@ -13,6 +13,8 @@ import java.util.Map; import java.util.Set; +import javax.inject.Inject; + import name.abuchen.portfolio.model.Account; import name.abuchen.portfolio.model.Classification; import name.abuchen.portfolio.model.Client; @@ -25,6 +27,7 @@ import name.abuchen.portfolio.ui.Messages; import name.abuchen.portfolio.ui.PortfolioPart; import name.abuchen.portfolio.ui.PortfolioPlugin; +import name.abuchen.portfolio.ui.UIConstants; import name.abuchen.portfolio.ui.util.AbstractCSVExporter; import name.abuchen.portfolio.ui.util.AbstractDropDown; import name.abuchen.portfolio.ui.util.chart.TimelineChart; @@ -32,6 +35,8 @@ import name.abuchen.portfolio.ui.views.ChartConfigurator.ClientDataSeries; import name.abuchen.portfolio.ui.views.ChartConfigurator.DataSeries; +import org.eclipse.e4.core.di.annotations.Optional; +import org.eclipse.e4.ui.di.UIEventTopic; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.IMenuManager; @@ -64,6 +69,13 @@ protected String getTitle() return Messages.LabelPerformanceChart; } + @Inject + @Optional + private void onConfigurationPicked(@UIEventTopic(UIConstants.Event.Configuration.PICKED) String name) + { + updateTitle(Messages.LabelPerformanceChart + " (" + name + ")"); //$NON-NLS-1$ //$NON-NLS-2$); + } + @Override public void init(PortfolioPart part, Object parameter) { @@ -132,14 +144,7 @@ protected Composite createBody(Composite parent) chart.getToolTip().setValueFormat(new DecimalFormat("0.##%")); //$NON-NLS-1$ picker = new ChartConfigurator(composite, this, ChartConfigurator.Mode.PERFORMANCE); - picker.setListener(new ChartConfigurator.Listener() - { - @Override - public void onUpdate() - { - updateChart(); - } - }); + picker.setListener(() -> updateChart()); GridLayoutFactory.fillDefaults().numColumns(1).margins(0, 0).spacing(0, 0).applyTo(composite); GridDataFactory.fillDefaults().grab(true, true).applyTo(chart); diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/ReturnsVolatilityChartView.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/ReturnsVolatilityChartView.java index 2a13d69fa9..4181bd8415 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/ReturnsVolatilityChartView.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/ReturnsVolatilityChartView.java @@ -12,6 +12,8 @@ import java.util.Map; import java.util.Set; +import javax.inject.Inject; + import name.abuchen.portfolio.math.Risk.Volatility; import name.abuchen.portfolio.model.Account; import name.abuchen.portfolio.model.Classification; @@ -22,6 +24,7 @@ import name.abuchen.portfolio.snapshot.ReportingPeriod; import name.abuchen.portfolio.ui.Messages; import name.abuchen.portfolio.ui.PortfolioPlugin; +import name.abuchen.portfolio.ui.UIConstants; import name.abuchen.portfolio.ui.util.AbstractCSVExporter; import name.abuchen.portfolio.ui.util.AbstractDropDown; import name.abuchen.portfolio.ui.util.chart.ScatterChart; @@ -29,6 +32,8 @@ import name.abuchen.portfolio.ui.views.ChartConfigurator.ClientDataSeries; import name.abuchen.portfolio.ui.views.ChartConfigurator.DataSeries; +import org.eclipse.e4.core.di.annotations.Optional; +import org.eclipse.e4.ui.di.UIEventTopic; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.IMenuManager; @@ -60,6 +65,13 @@ protected String getTitle() return Messages.LabelHistoricalReturnsAndVolatiltity; } + @Inject + @Optional + private void onConfigurationPicked(@UIEventTopic(UIConstants.Event.Configuration.PICKED) String name) + { + updateTitle(Messages.LabelHistoricalReturnsAndVolatiltity + " (" + name + ")"); //$NON-NLS-1$ //$NON-NLS-2$); + } + @Override protected void addButtons(ToolBar toolBar) { @@ -133,14 +145,7 @@ public boolean drawBehindSeries() }); picker = new ChartConfigurator(composite, this, ChartConfigurator.Mode.RETURN_VOLATILITY); - picker.setListener(new ChartConfigurator.Listener() - { - @Override - public void onUpdate() - { - updateChart(); - } - }); + picker.setListener(() -> updateChart()); GridLayoutFactory.fillDefaults().numColumns(1).margins(0, 0).spacing(0, 0).applyTo(composite); GridDataFactory.fillDefaults().grab(true, true).applyTo(chart); diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/SecurityListView.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/SecurityListView.java index 1faf4b7c88..9653b57765 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/SecurityListView.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/SecurityListView.java @@ -9,6 +9,8 @@ import java.util.List; import java.util.regex.Pattern; +import javax.inject.Inject; + import name.abuchen.portfolio.model.AccountTransaction; import name.abuchen.portfolio.model.Portfolio; import name.abuchen.portfolio.model.PortfolioTransaction; @@ -24,6 +26,7 @@ import name.abuchen.portfolio.ui.Messages; import name.abuchen.portfolio.ui.PortfolioPart; import name.abuchen.portfolio.ui.PortfolioPlugin; +import name.abuchen.portfolio.ui.UIConstants; import name.abuchen.portfolio.ui.util.Column; import name.abuchen.portfolio.ui.util.ColumnEditingSupport; import name.abuchen.portfolio.ui.util.ColumnEditingSupport.ModificationListener; @@ -41,6 +44,8 @@ import name.abuchen.portfolio.ui.wizards.security.EditSecurityDialog; import name.abuchen.portfolio.util.Dates; +import org.eclipse.e4.core.di.annotations.Optional; +import org.eclipse.e4.ui.di.UIEventTopic; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.IMenuListener; @@ -111,6 +116,13 @@ protected String getTitle() return watchlist == null ? Messages.LabelSecurities : Messages.LabelSecurities + " " + watchlist.getName(); //$NON-NLS-1$ } + @Inject + @Optional + private void onConfigurationPicked(@UIEventTopic(UIConstants.Event.Configuration.PICKED) String name) + { + updateTitle(getTitle() + " (" + name + ")"); //$NON-NLS-1$ //$NON-NLS-2$); + } + @Override protected int[] getDefaultWeights(Control[] children) { diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/StatementOfAssetsHistoryView.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/StatementOfAssetsHistoryView.java index 19cf2899f5..08cd60dc3a 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/StatementOfAssetsHistoryView.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/StatementOfAssetsHistoryView.java @@ -5,6 +5,8 @@ import java.util.List; import java.util.Map; +import javax.inject.Inject; + import name.abuchen.portfolio.model.Account; import name.abuchen.portfolio.model.Classification; import name.abuchen.portfolio.model.Client; @@ -14,11 +16,14 @@ import name.abuchen.portfolio.snapshot.PerformanceIndex; import name.abuchen.portfolio.ui.Messages; import name.abuchen.portfolio.ui.PortfolioPlugin; +import name.abuchen.portfolio.ui.UIConstants; import name.abuchen.portfolio.ui.util.chart.TimelineChart; import name.abuchen.portfolio.ui.util.chart.TimelineChartCSVExporter; import name.abuchen.portfolio.ui.views.ChartConfigurator.ClientDataSeries; import name.abuchen.portfolio.ui.views.ChartConfigurator.DataSeries; +import org.eclipse.e4.core.di.annotations.Optional; +import org.eclipse.e4.ui.di.UIEventTopic; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.IMenuListener; @@ -48,6 +53,13 @@ protected String getTitle() return Messages.LabelStatementOfAssetsHistory; } + @Inject + @Optional + private void onConfigurationPicked(@UIEventTopic(UIConstants.Event.Configuration.PICKED) String name) + { + updateTitle(Messages.LabelStatementOfAssetsHistory + " (" + name + ")"); //$NON-NLS-1$ //$NON-NLS-2$); + } + protected void addButtons(ToolBar toolBar) { super.addButtons(toolBar); @@ -138,14 +150,7 @@ protected Composite createBody(Composite parent) chart.getTitle().setVisible(false); picker = new ChartConfigurator(composite, this, ChartConfigurator.Mode.STATEMENT_OF_ASSETS); - picker.setListener(new ChartConfigurator.Listener() - { - @Override - public void onUpdate() - { - updateChart(); - } - }); + picker.setListener(() -> updateChart()); GridLayoutFactory.fillDefaults().numColumns(1).margins(0, 0).spacing(0, 0).applyTo(composite); GridDataFactory.fillDefaults().grab(true, true).applyTo(chart); diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/StatementOfAssetsView.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/StatementOfAssetsView.java index ff7768306e..9aa989e035 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/StatementOfAssetsView.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/StatementOfAssetsView.java @@ -1,12 +1,17 @@ package name.abuchen.portfolio.ui.views; +import javax.inject.Inject; + import name.abuchen.portfolio.snapshot.ClientSnapshot; import name.abuchen.portfolio.ui.AbstractFinanceView; import name.abuchen.portfolio.ui.Messages; import name.abuchen.portfolio.ui.PortfolioPlugin; +import name.abuchen.portfolio.ui.UIConstants; import name.abuchen.portfolio.ui.util.TableViewerCSVExporter; import name.abuchen.portfolio.util.Dates; +import org.eclipse.e4.core.di.annotations.Optional; +import org.eclipse.e4.ui.di.UIEventTopic; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.IMenuListener; @@ -25,6 +30,13 @@ protected String getTitle() return Messages.LabelStatementOfAssets; } + @Inject + @Optional + private void onConfigurationPicked(@UIEventTopic(UIConstants.Event.Configuration.PICKED) String name) + { + updateTitle(Messages.LabelStatementOfAssets + " (" + name + ")"); //$NON-NLS-1$ //$NON-NLS-2$); + } + @Override public void notifyModelUpdated() {