Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWim Jongman2018-05-31 21:46:06 +0000
committerLars Vogel2018-06-01 07:37:37 +0000
commit5f27cfac56c91fea26086a4407deebb9026e758f (patch)
treef0a7815a39d08e4346731c6346ca98ae0b08e085
parent111beba2e64ca82a171a007df7804a82ba10849d (diff)
downloadeclipse.platform.ua-5f27cfac56c91fea26086a4407deebb9026e758f.tar.gz
eclipse.platform.ua-5f27cfac56c91fea26086a4407deebb9026e758f.tar.xz
eclipse.platform.ua-5f27cfac56c91fea26086a4407deebb9026e758f.zip
Bug 535391 - [Tips] Do not open tips on startup if there are no new tipsI20180601-0915I20180601-0900
* Tip Dialog is not shown on startup if there or no new tips * Improved logging/tracing * Load check method had a timing problem Change-Id: Ic7df5eb0649f73857b7c42c6b36f3f7210f8af4d Signed-off-by: Wim Jongman <wim.jongman@remainsoftware.com>
-rw-r--r--org.eclipse.tips.core/src/org/eclipse/tips/core/ITipManager.java8
-rw-r--r--org.eclipse.tips.core/src/org/eclipse/tips/core/internal/TipManager.java2
-rw-r--r--org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/IDETipManager.java16
-rw-r--r--org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/ProviderLoadJobChangeListener.java10
-rw-r--r--org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/TipsPreferences.java26
5 files changed, 46 insertions, 16 deletions
diff --git a/org.eclipse.tips.core/src/org/eclipse/tips/core/ITipManager.java b/org.eclipse.tips.core/src/org/eclipse/tips/core/ITipManager.java
index 16007f3fc..8e2e64983 100644
--- a/org.eclipse.tips.core/src/org/eclipse/tips/core/ITipManager.java
+++ b/org.eclipse.tips.core/src/org/eclipse/tips/core/ITipManager.java
@@ -84,10 +84,10 @@ public interface ITipManager {
public boolean isOpen();
/**
- * Indicates if this manager has providers with tips (based on the read or
- * unread requirement). Be aware that subsequent calls to this method may return
- * different results based on the async nature of loading providers.
- *
+ * Indicates if this manager has providers with unread tips. Be aware that
+ * subsequent calls to this method may return different results based on the
+ * async nature of loading providers.
+ *
* @return true if this {@link TipManager} has providers with tips.
* @see TipProvider#getTips()
*/
diff --git a/org.eclipse.tips.core/src/org/eclipse/tips/core/internal/TipManager.java b/org.eclipse.tips.core/src/org/eclipse/tips/core/internal/TipManager.java
index f8bb83f7e..f466dd330 100644
--- a/org.eclipse.tips.core/src/org/eclipse/tips/core/internal/TipManager.java
+++ b/org.eclipse.tips.core/src/org/eclipse/tips/core/internal/TipManager.java
@@ -275,7 +275,7 @@ public abstract class TipManager implements ITipManager {
@Override
public boolean hasContent() {
for (TipProvider provider : getProviders()) {
- if (provider.isReady() && !provider.getTips().isEmpty()) {
+ if (provider.isReady() && !provider.getTips(tip -> !isRead(tip)).isEmpty()) {
return true;
}
}
diff --git a/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/IDETipManager.java b/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/IDETipManager.java
index 9a5cdbbcd..8e10c2567 100644
--- a/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/IDETipManager.java
+++ b/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/IDETipManager.java
@@ -16,7 +16,6 @@ import java.io.IOException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -52,7 +51,7 @@ public class IDETipManager extends DefaultTipManager {
private TipSourceProvider fSourceProvider = new TipSourceProvider(this);
- private Map<String, List<Integer>> fReadTips = new HashMap<>();
+ private Map<String, List<Integer>> fReadTips = TipsPreferences.getReadState();
private boolean fNewTips;
@@ -104,7 +103,6 @@ public class IDETipManager extends DefaultTipManager {
evaluationService.addSourceProvider(fSourceProvider);
fSourceProviderAdded = true;
}
- fReadTips = TipsPreferences.getReadState();
return super.open(startUp, Plugin.getInstance().getDialogSettings());
}
@@ -135,7 +133,7 @@ public class IDETipManager extends DefaultTipManager {
* @param newTips
*/
private void refreshUI() {
- boolean newTips = getProviders().stream().filter(p -> !p.getTips().isEmpty()).count() > 0;
+ boolean newTips = hasNewTips();
Job job = new Job(Messages.IDETipManager_5) {
@Override
protected IStatus run(IProgressMonitor monitor) {
@@ -146,6 +144,16 @@ public class IDETipManager extends DefaultTipManager {
job.schedule();
}
+ private boolean hasNewTips() {
+ log(LogUtil.info("START: Query all providers for new tips."));//$NON-NLS-1$
+ int newTipCount = 0;
+ for (TipProvider provider : getProviders()) {
+ newTipCount += provider.getTips(tip -> !isRead(tip)).size();
+ }
+ log(LogUtil.info("END: Query all providers for new tips: " + (newTipCount > 0)));//$NON-NLS-1$
+ return newTipCount > 0;
+ }
+
@Override
public int getStartupBehavior() {
return TipsPreferences.getStartupBehavior();
diff --git a/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/ProviderLoadJobChangeListener.java b/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/ProviderLoadJobChangeListener.java
index 52cd60362..56894010e 100644
--- a/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/ProviderLoadJobChangeListener.java
+++ b/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/ProviderLoadJobChangeListener.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.tips.ide.internal;
+import java.util.List;
+
import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.tips.core.Tip;
@@ -40,11 +42,7 @@ public class ProviderLoadJobChangeListener extends JobChangeAdapter {
*/
@Override
public void done(IJobChangeEvent event) {
- for (Tip tip : fProvider.getTips(null)) {
- if (!fManager.isRead(tip)) {
- fManager.setNewTips(true);
- return;
- }
- }
+ List<Tip> unreadTips = fProvider.getTips(tip -> !fManager.isRead(tip));
+ fManager.setNewTips(!unreadTips.isEmpty());
}
} \ No newline at end of file
diff --git a/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/TipsPreferences.java b/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/TipsPreferences.java
index 175180eb7..73fd3bc1e 100644
--- a/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/TipsPreferences.java
+++ b/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/TipsPreferences.java
@@ -144,10 +144,34 @@ public class TipsPreferences extends AbstractPreferenceInitializer {
}
if (isConsoleLog()) {
System.out.println(
- String.format("%1$tR:%1$tS:%1$tN - %2$s", Calendar.getInstance().getTime(), status.toString())); //$NON-NLS-1$
+ String.format("%1$tR:%1$tS:%1$tN - %2$s", Calendar.getInstance().getTime(), format(status))); //$NON-NLS-1$
}
}
+ /**
+ * Converts the passed status object to a readable string and tries to get the
+ * location where the log method was called.
+ *
+ * @param pStatus the status to format
+ * @return the formatted status to string.
+ */
+ private static Object format(IStatus pStatus) {
+ StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
+ String origin = "<unknown>"; //$NON-NLS-1$
+ if (stackTrace.length > 3) {
+ StackTraceElement ste = stackTrace[4];
+ String[] fqcn = ste.getClassName().split("\\.");
+ String clazz = fqcn[fqcn.length - 1];
+ origin = clazz + "#" + ste.getMethodName() + "(" + ste.getLineNumber() + ")";
+ }
+
+ String statusLine = pStatus.toString();
+ if (statusLine.endsWith(" null")) {
+ statusLine = statusLine.substring(0, statusLine.length() - " null".length());
+ }
+ return statusLine + " : " + origin;
+ }
+
public static int getStartupBehavior() {
return getPreferences().getInt(PREF_STARTUP_BEHAVIOR, getDefaultStartupBehavior());
}

Back to the top