Bug 378112 - Product editor should allow 256x256 window icon
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/ProductExportOperation.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/ProductExportOperation.java
index 4dd7378..d21ae34 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/ProductExportOperation.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/ProductExportOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
+ * Copyright (c) 2006, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -396,6 +396,7 @@
 			append(buffer, info.getIconPath(ILauncherInfo.WIN32_32_LOW));
 			append(buffer, info.getIconPath(ILauncherInfo.WIN32_48_HIGH));
 			append(buffer, info.getIconPath(ILauncherInfo.WIN32_48_LOW));
+			append(buffer, info.getIconPath(ILauncherInfo.WIN32_256_HIGH));
 		}
 		return buffer.length() > 0 ? buffer.toString() : null;
 	}
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/iproduct/ILauncherInfo.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/iproduct/ILauncherInfo.java
index 968ea1e..e88ee99 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/iproduct/ILauncherInfo.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/iproduct/ILauncherInfo.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2008 IBM Corporation and others.
+ *  Copyright (c) 2005, 2012 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -27,6 +27,7 @@
 	public static final String WIN32_32_HIGH = "winMediumHigh"; //$NON-NLS-1$
 	public static final String WIN32_48_LOW = "winLargeLow"; //$NON-NLS-1$
 	public static final String WIN32_48_HIGH = "winLargeHigh"; //$NON-NLS-1$
+	public static final String WIN32_256_HIGH = "winExtraLargeHigh"; //$NON-NLS-1$
 
 	public static final String P_USE_ICO = "useIco"; //$NON-NLS-1$
 	public static final String P_ICO_PATH = "icoFile"; //$NON-NLS-1$
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/LauncherInfo.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/LauncherInfo.java
index 13f2d87..cca6be1 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/LauncherInfo.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/LauncherInfo.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2008 IBM Corporation and others.
+ *  Copyright (c) 2005, 2012 IBM Corporation and others.
  *  All rights reserved. This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License v1.0
  *  which accompanies this distribution, and is available at
@@ -13,12 +13,9 @@
 import java.io.PrintWriter;
 import java.util.HashMap;
 import java.util.Map;
-
 import org.eclipse.pde.internal.core.iproduct.ILauncherInfo;
 import org.eclipse.pde.internal.core.iproduct.IProductModel;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
+import org.w3c.dom.*;
 
 public class LauncherInfo extends ProductObject implements ILauncherInfo {
 
@@ -104,6 +101,7 @@
 					fIcons.put(WIN32_32_LOW, child.getAttribute(WIN32_32_LOW));
 					fIcons.put(WIN32_48_HIGH, child.getAttribute(WIN32_48_HIGH));
 					fIcons.put(WIN32_48_LOW, child.getAttribute(WIN32_48_LOW));
+					fIcons.put(WIN32_256_HIGH, child.getAttribute(WIN32_256_HIGH));
 				}
 			}
 		}
@@ -149,6 +147,7 @@
 		writeIcon(indent + "   ", WIN32_32_LOW, writer); //$NON-NLS-1$
 		writeIcon(indent + "   ", WIN32_48_HIGH, writer); //$NON-NLS-1$
 		writeIcon(indent + "   ", WIN32_48_LOW, writer); //$NON-NLS-1$
+		writeIcon(indent + "   ", WIN32_256_HIGH, writer); //$NON-NLS-1$
 		writer.println("/>"); //$NON-NLS-1$
 		writer.println(indent + "</win>"); //$NON-NLS-1$
 	}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java
index 933cbff..3d7b12e 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java
@@ -1000,6 +1000,7 @@
 	public static String LauncherSection_32High;
 	public static String LauncherSection_48Low;
 	public static String LauncherSection_48High;
+	public static String LauncherSection_256High;
 	public static String LauncherSection_linuxLabel;
 	public static String LauncherSection_large;
 	public static String LauncherSection_medium;
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/LauncherSection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/LauncherSection.java
index af709ef..ee4a9be 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/LauncherSection.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/product/LauncherSection.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2011 IBM Corporation and others.
+ * Copyright (c) 2005, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -48,10 +48,10 @@
 
 	private TextValidator fSingleWinIconValidator;
 
-	private static final String[] F_WIN_ICON_LABELS = new String[] {PDEUIMessages.LauncherSection_Low16, PDEUIMessages.LauncherSection_High16, PDEUIMessages.LauncherSection_32Low, PDEUIMessages.LauncherSection_32High, PDEUIMessages.LauncherSection_48Low, PDEUIMessages.LauncherSection_48High};
-	public static final int[] F_WIN_ICON_DEPTHS = new int[] {8, 32, 8, 32, 8, 32};
-	public static final int[][] F_WIN_ICON_DIMENSIONS = new int[][] { {16, 16}, {16, 16}, {32, 32}, {32, 32}, {48, 48}, {48, 48}};
-	private static final String[] F_WIN_ICON_IDS = new String[] {ILauncherInfo.WIN32_16_LOW, ILauncherInfo.WIN32_16_HIGH, ILauncherInfo.WIN32_32_LOW, ILauncherInfo.WIN32_32_HIGH, ILauncherInfo.WIN32_48_LOW, ILauncherInfo.WIN32_48_HIGH};
+	private static final String[] F_WIN_ICON_LABELS = new String[] {PDEUIMessages.LauncherSection_Low16, PDEUIMessages.LauncherSection_High16, PDEUIMessages.LauncherSection_32Low, PDEUIMessages.LauncherSection_32High, PDEUIMessages.LauncherSection_48Low, PDEUIMessages.LauncherSection_48High, PDEUIMessages.LauncherSection_256High};
+	public static final int[] F_WIN_ICON_DEPTHS = new int[] {8, 32, 8, 32, 8, 32, 32};
+	public static final int[][] F_WIN_ICON_DIMENSIONS = new int[][] { {16, 16}, {16, 16}, {32, 32}, {32, 32}, {48, 48}, {48, 48}, {256, 256}};
+	private static final String[] F_WIN_ICON_IDS = new String[] {ILauncherInfo.WIN32_16_LOW, ILauncherInfo.WIN32_16_HIGH, ILauncherInfo.WIN32_32_LOW, ILauncherInfo.WIN32_32_HIGH, ILauncherInfo.WIN32_48_LOW, ILauncherInfo.WIN32_48_HIGH, ILauncherInfo.WIN32_256_HIGH};
 
 	private FormEntry fNameEntry;
 	private ArrayList fIcons = new ArrayList();
@@ -356,7 +356,7 @@
 			if (id.equals(ILauncherInfo.P_ICO_PATH)) {
 				boolean enabled = isEditable() && useIco;
 				entry.setEditable(enabled);
-			} else if (id.equals(ILauncherInfo.WIN32_16_HIGH) || id.equals(ILauncherInfo.WIN32_16_LOW) || id.equals(ILauncherInfo.WIN32_32_HIGH) || id.equals(ILauncherInfo.WIN32_32_LOW) || id.equals(ILauncherInfo.WIN32_48_HIGH) || id.equals(ILauncherInfo.WIN32_48_LOW)) {
+			} else if (id.equals(ILauncherInfo.WIN32_16_HIGH) || id.equals(ILauncherInfo.WIN32_16_LOW) || id.equals(ILauncherInfo.WIN32_32_HIGH) || id.equals(ILauncherInfo.WIN32_32_LOW) || id.equals(ILauncherInfo.WIN32_48_HIGH) || id.equals(ILauncherInfo.WIN32_48_LOW) || id.equals(ILauncherInfo.WIN32_256_HIGH)) {
 				entry.setEditable(isEditable() && !useIco);
 			}
 		}
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
index 6730648..20a6c1d 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
@@ -596,7 +596,7 @@
 
 Launcher_error_title=Launch Error
 LauncherSection_desc=Customize the executable that is used to launch the product.
-LauncherSection_ico=Use a single ICO file containing the 6 images:
+LauncherSection_ico=Use a single ICO file containing the 7 images:
 LauncherUtils_workspaceLocked=Workspace Cannot Be Locked
 LauncherUtils_clearLogFile=Do you really want to clear the log file?
 LauncherUtils_edit=&Edit...
@@ -612,13 +612,14 @@
 LauncherSection_browse=Browse...
 LauncherSection_title=Program Launcher
 LauncherSection_label=Customizing the launcher icon varies per platform.
-LauncherSection_bmpImages=Specify 6 separate BMP images:
+LauncherSection_bmpImages=Specify 7 separate BMP images:
 LauncherSection_Low16=16x16 (8-bit):
 LauncherSection_High16=16x16 (32-bit):
 LauncherSection_32Low=32x32 (8-bit):
 LauncherSection_32High=32x32 (32-bit):
 LauncherSection_48Low=48x48 (8-bit):
 LauncherSection_48High=48x48 (32-bit):
+LauncherSection_256High=256x256 (32-bit):
 LauncherSection_linuxLabel=A single XPM icon is required:
 LauncherSection_large=Large:
 LauncherSection_medium=Medium: