[88260] Added preference to prompt for licenses the user has already disagreed to.
diff --git a/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/CachePlugin.java b/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/CachePlugin.java
index 4b23822..2984bc7 100644
--- a/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/CachePlugin.java
+++ b/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/CachePlugin.java
@@ -187,6 +187,30 @@
 	  return getPluginPreferences().getBoolean(PreferenceConstants.CACHE_ENABLED);
 	return true;
   }
+  
+  /**
+   * Set whether or not the user should be prompted for licenses to which they 
+   * have previously disagreed.
+   * 
+   * @param prompt If true the the user should be prompted, if false the user should not be prompted.
+   */
+  public void setPromptDisagreedLicenses(boolean prompt) 
+  {
+	getPluginPreferences().setValue(PreferenceConstants.PROMPT_DISAGREED_LICENSES, prompt);
+  }
+
+  /**
+   * Returns true if the the user should be prompted for licenses to which they
+   * have previously disagreed, false otherwise.
+   * 
+   * @return True if the user should be prompted, false otherwise.
+   */
+  public boolean shouldPrompt() 
+  {
+	if (getPluginPreferences().contains(PreferenceConstants.PROMPT_DISAGREED_LICENSES))
+	  return getPluginPreferences().getBoolean(PreferenceConstants.PROMPT_DISAGREED_LICENSES);
+	return true;
+  }
 
   /**
    * Start the cache job. The cache job caches resources that were not able to be previously
diff --git a/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/CachePluginResources.properties b/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/CachePluginResources.properties
index 4def1f4..9dc6242 100644
--- a/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/CachePluginResources.properties
+++ b/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/CachePluginResources.properties
@@ -19,6 +19,7 @@
 _UI_PREF_CACHE_ENTRIES_TITLE                  = &Cache entries:
 _UI_PREF_CACHE_CACHE_OPTION                   = &Disable caching
 _UI_PREF_CACHE_ABOUT                          = Manage the cache of remote resources, such as those downloaded from the internet.
+_UI_PREF_PROMPT_FOR_DISAGREED_LICENSES        = &Prompt me for agreement for licenses for whose terms I have already disagreed.
 
 # Cache monitor strings.
 _UI_CACHE_MONITOR_NAME                        = Caching Remote Resources
diff --git a/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/LicenseRegistry.java b/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/LicenseRegistry.java
index 7bb5cbb..0851f7d 100644
--- a/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/LicenseRegistry.java
+++ b/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/LicenseRegistry.java
@@ -114,7 +114,8 @@
 	  }
 	  else if(agreed == LICENSE_DISAGREE)
 	  {
-		return false;
+		if(!CachePlugin.getDefault().shouldPrompt())
+		  return false;
 	  }
 	  
 	  // Prompt the user to accept the license.
diff --git a/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/preferences/CachePreferencePage.java b/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/preferences/CachePreferencePage.java
index cf51c2d..f228efd 100644
--- a/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/preferences/CachePreferencePage.java
+++ b/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/preferences/CachePreferencePage.java
@@ -62,12 +62,16 @@
   private static final String _UI_CONFIRM_DELETE_CACHE_ENTRY_DIALOG_MESSAGE = "_UI_CONFIRM_DELETE_CACHE_ENTRY_DIALOG_MESSAGE";
   
   private static final String _UI_PREF_CACHE_ABOUT = "_UI_PREF_CACHE_ABOUT";
+  
+  private static final String _UI_PREF_PROMPT_FOR_DISAGREED_LICENSES = "_UI_PREF_PROMPT_FOR_DISAGREED_LICENSES";
 
   protected Button clearButton;
 
   protected Button deleteButton;
 
   protected Button enabledButton;
+  
+  protected Button disagreedLicensesButton;
 
   protected List entries;
 
@@ -122,12 +126,15 @@
     aboutLabel.setText(CachePlugin.getResourceString(_UI_PREF_CACHE_ABOUT));
     GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
     gridData.horizontalSpan = 2;
-    gridData.heightHint = 20;
     aboutLabel.setLayoutData(gridData);
+    Label blankLabel = new Label(composite, SWT.None);
     try
     {
       // Created the disable cache option.
       enabledButton = new Button(composite, SWT.CHECK | SWT.LEFT);
+      gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+      gridData.horizontalSpan = 2;
+      enabledButton.setLayoutData(gridData);
       enabledButton.setText(CachePlugin
           .getResourceString(_UI_PREF_CACHE_CACHE_OPTION));
       enabledButton.setSelection(!CachePlugin.getDefault().getPreferenceStore()
@@ -148,6 +155,31 @@
         }
 
       });
+      
+      disagreedLicensesButton = new Button(composite, SWT.CHECK | SWT.LEFT);
+      gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+      gridData.horizontalSpan = 2;
+      disagreedLicensesButton.setLayoutData(gridData);
+      disagreedLicensesButton.setText(CachePlugin
+          .getResourceString(_UI_PREF_PROMPT_FOR_DISAGREED_LICENSES));
+      disagreedLicensesButton.setSelection(CachePlugin.getDefault().getPreferenceStore()
+          .getBoolean(PreferenceConstants.PROMPT_DISAGREED_LICENSES));
+      disagreedLicensesButton.addSelectionListener(new SelectionListener()
+      {
+
+        public void widgetDefaultSelected(SelectionEvent e)
+        {
+          widgetSelected(e);
+
+        }
+
+        public void widgetSelected(SelectionEvent e)
+        {
+          boolean prompt = disagreedLicensesButton.getSelection();
+          CachePlugin.getDefault().setPromptDisagreedLicenses(prompt);
+        }
+
+      });
 
       // Create the entities group.
       Label entriesLabel = new Label(composite, SWT.WRAP);
diff --git a/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/preferences/PreferenceConstants.java b/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/preferences/PreferenceConstants.java
index 03d4610..a51c4ae 100644
--- a/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/preferences/PreferenceConstants.java
+++ b/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/preferences/PreferenceConstants.java
@@ -17,5 +17,7 @@
 public class PreferenceConstants 
 {
   public static final String CACHE_ENABLED = "cacheEnabled";
+  
+  public static final String PROMPT_DISAGREED_LICENSES = "promptDisagreedLicenses";
 	
 }
diff --git a/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/preferences/PreferenceInitializer.java b/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/preferences/PreferenceInitializer.java
index 952f81e..2ee42db 100644
--- a/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/preferences/PreferenceInitializer.java
+++ b/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/preferences/PreferenceInitializer.java
@@ -28,5 +28,6 @@
   {
 	IPreferenceStore store = CachePlugin.getDefault().getPreferenceStore();
     store.setDefault(PreferenceConstants.CACHE_ENABLED, false);
+    store.setDefault(PreferenceConstants.PROMPT_DISAGREED_LICENSES, false);
   }
 }