Bug 520430 - [Glance] After stopping a reindexing it is not possible to start it again Change-Id: I3e57b4c78e4e9658bca380c6ae7dc55c92127a2d
diff --git a/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/internal/search/SearchManager.java b/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/internal/search/SearchManager.java index 5d91a89..1f07074 100644 --- a/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/internal/search/SearchManager.java +++ b/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/internal/search/SearchManager.java
@@ -20,7 +20,6 @@ import org.eclipse.ui.IWindowListener; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; - import org.eclipse.ui.glance.internal.GlancePlugin; import org.eclipse.ui.glance.internal.panels.SearchPanelManager; import org.eclipse.ui.glance.internal.panels.SearchStatusLine; @@ -29,6 +28,7 @@ import org.eclipse.ui.glance.internal.sources.TextSourceMaker; import org.eclipse.ui.glance.internal.sources.TextSourceManager; import org.eclipse.ui.glance.panels.ISearchPanel; +import org.eclipse.ui.glance.panels.ISearchPanel.IndexingState; import org.eclipse.ui.glance.panels.ISearchPanelListener; import org.eclipse.ui.glance.sources.ITextSource; import org.eclipse.ui.glance.sources.Match; @@ -331,8 +331,7 @@ && indexRequired) { index(); } else { - panel.setIndexingState(indexRequired ? ISearchPanel.INDEXING_STATE_INITIAL - : ISearchPanel.INDEXING_STATE_DISABLE); + panel.setIndexingState(indexRequired ? IndexingState.INITIAL : IndexingState.DISABLED); } } @@ -342,7 +341,7 @@ new Thread() { @Override public void run() { - panel.setIndexingState(ISearchPanel.INDEXING_STATE_IN_PROGRESS); + panel.setIndexingState(IndexingState.IN_PROGRESS); if (source != null) { source.index(monitor); } @@ -357,7 +356,7 @@ if (panel != null) { panel.setEnabled(source != null); if (source == null) { - panel.setIndexingState(ISearchPanel.INDEXING_STATE_FINISHED); + panel.setIndexingState(IndexingState.FINISHED); } } }
diff --git a/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/internal/search/SearchProgressMonitor.java b/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/internal/search/SearchProgressMonitor.java index 1a9a7cb..5f574e3 100644 --- a/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/internal/search/SearchProgressMonitor.java +++ b/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/internal/search/SearchProgressMonitor.java
@@ -11,8 +11,8 @@ package org.eclipse.ui.glance.internal.search; import org.eclipse.core.runtime.IProgressMonitor; - import org.eclipse.ui.glance.panels.ISearchPanel; +import org.eclipse.ui.glance.panels.ISearchPanel.IndexingState; public class SearchProgressMonitor implements IProgressMonitor { @@ -37,7 +37,7 @@ if (isCanceled()) { return; } - panel.setIndexingState(ISearchPanel.INDEXING_STATE_FINISHED); + panel.setIndexingState(IndexingState.FINISHED); } @Override @@ -60,7 +60,8 @@ @Override public void setCanceled(boolean value) { this.cancel = value; - panel.setIndexingState(ISearchPanel.INDEXING_STATE_FINISHED); + if (value) + panel.setIndexingState(IndexingState.CANCELED); } @Override
diff --git a/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/panels/ISearchPanel.java b/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/panels/ISearchPanel.java index 9d1566c..64fd85f 100644 --- a/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/panels/ISearchPanel.java +++ b/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/panels/ISearchPanel.java
@@ -11,7 +11,6 @@ package org.eclipse.ui.glance.panels; import org.eclipse.swt.widgets.Control; - import org.eclipse.ui.glance.internal.search.ISearchListener; import org.eclipse.ui.glance.internal.search.SearchRule; @@ -21,13 +20,9 @@ */ public interface ISearchPanel extends ISearchListener { - public static int INDEXING_STATE_DISABLE = 0; - - public static int INDEXING_STATE_INITIAL = 1; - - public static int INDEXING_STATE_IN_PROGRESS = 2; - - public static int INDEXING_STATE_FINISHED = 3; + public enum IndexingState { + DISABLED, INITIAL, IN_PROGRESS, CANCELED, FINISHED + } public void addPanelListener(ISearchPanelListener listener); @@ -39,7 +34,7 @@ public Control getControl(); - public void setIndexingState(int state); + public void setIndexingState(IndexingState state); public void updateIndexingPercent(double percent);
diff --git a/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/panels/SearchPanel.java b/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/panels/SearchPanel.java index 4404a53..e511bb0 100644 --- a/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/panels/SearchPanel.java +++ b/bundles/org.eclipse.ui.glance/src/org/eclipse/ui/glance/panels/SearchPanel.java
@@ -55,7 +55,6 @@ import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.PreferencesUtil; - import org.eclipse.ui.glance.internal.GlanceEventDispatcher; import org.eclipse.ui.glance.internal.GlancePlugin; import org.eclipse.ui.glance.internal.panels.CheckAction; @@ -84,15 +83,15 @@ } @Override - public void setIndexingState(final int state) { - indexState = state; + public void setIndexingState(final IndexingState state) { + indexingState = state; if (updateInfoThread != null) { final UpdateInfoThread thread = updateInfoThread; thread.requestStop(); updateInfoThread = null; } - if (state == INDEXING_STATE_IN_PROGRESS) { + if (state == IndexingState.IN_PROGRESS) { indexPercent = 0; try { updateInfoThread = new UpdateInfoThread(); @@ -155,7 +154,7 @@ @Override protected boolean isTerminated() { - return stop || indexState != INDEXING_STATE_IN_PROGRESS; + return stop || indexingState != IndexingState.IN_PROGRESS; } @Override @@ -173,27 +172,24 @@ return; } - if (indexState == INDEXING_STATE_DISABLE) { - bIndexing.setToolTipText("Index component"); - bIndexing.setSelection(false); + if (indexingState == IndexingState.DISABLED) { + bIndexing.setToolTipText("Indexing isn't available for the component"); bIndexing.setEnabled(false); if (bIndexing.getImage() == null) { bIndexing.setImage(GlancePlugin .getImage(GlancePlugin.IMG_START_INDEXING)); } - } else if (indexState == INDEXING_STATE_INITIAL) { + } else if (indexingState == IndexingState.INITIAL || indexingState == IndexingState.CANCELED) { bIndexing.setToolTipText("Index component"); - bIndexing.setSelection(false); bIndexing.setImage(GlancePlugin .getImage(GlancePlugin.IMG_START_INDEXING)); bIndexing.setEnabled(true); - } else if (indexState == INDEXING_STATE_FINISHED) { - bIndexing.setToolTipText("Index finished"); - bIndexing.setSelection(false); + } else if (indexingState == IndexingState.FINISHED) { + bIndexing.setToolTipText("Component indexed"); + bIndexing.setImage(GlancePlugin.getImage(GlancePlugin.IMG_START_INDEXING)); bIndexing.setEnabled(false); } else { final StringBuilder buffer = new StringBuilder(); - bIndexing.setSelection(true); bIndexing.setImage(image); if (taskName != null && taskName.length() > 0) { buffer.append(taskName); @@ -294,7 +290,7 @@ createNextItem(toolBar); createPreviousItem(toolBar); } - createIndexing(toolBar); + createIndexItem(toolBar); createSettingsMenu(toolBar); if (getPreferences().getBoolean(PANEL_CLOSE)) { createClose(toolBar); @@ -324,16 +320,16 @@ return bPrev; } - private void createIndexing(final ToolBar bar) { - bIndexing = new ToolItem(bar, SWT.CHECK); + private void createIndexItem(final ToolBar bar) { + bIndexing = new ToolItem(bar, SWT.PUSH); bIndexing.setDisabledImage(GlancePlugin .getImage(GlancePlugin.IMG_INDEXING_FINISHED)); bIndexing.addSelectionListener(new SelectionAdapter() { @Override public void selected(final SelectionEvent e) { - if (indexState == INDEXING_STATE_INITIAL) { + if (indexingState == IndexingState.INITIAL || indexingState == IndexingState.CANCELED) { SearchManager.getIntance().index(); - } else if (indexState != INDEXING_STATE_FINISHED) { + } else if (indexingState != IndexingState.FINISHED) { fireIndexCanceled(); } } @@ -674,7 +670,7 @@ protected Combo title; private boolean titleEnabled = true; - private final ListenerList listeners = new ListenerList(); + private final ListenerList<ISearchPanelListener> listeners = new ListenerList<>(); private final ModifyListener modifyListener = new ModifyListener() { @Override public void modifyText(final ModifyEvent e) { @@ -691,7 +687,7 @@ private SearchRule rule; private Match[] result = Match.EMPTY; - private double indexState; + private IndexingState indexingState; private double indexPercent; private String taskName;