/*******************************************************************************
* Copyright (c) 2009 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Zend Technologies
*******************************************************************************/
package org.eclipse.php.internal.debug.ui.preferences;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.IPreferencesService;
import org.eclipse.core.runtime.preferences.IScopeContext;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.jface.dialogs.IPageChangedListener;
import org.eclipse.jface.dialogs.PageChangedEvent;
import org.eclipse.jface.preference.PreferenceDialog;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.php.internal.debug.core.PHPDebugPlugin;
import org.eclipse.php.internal.debug.core.preferences.*;
import org.eclipse.php.internal.debug.ui.Logger;
import org.eclipse.php.internal.debug.ui.PHPDebugUIMessages;
import org.eclipse.php.internal.server.core.Server;
import org.eclipse.php.internal.server.core.manager.ServersManager;
import org.eclipse.php.internal.ui.preferences.AbstractPHPPreferencePageBlock;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.dialogs.PreferencesUtil;
import org.eclipse.ui.ide.IDEEncoding;
import org.osgi.service.prefs.BackingStoreException;
/**
* PHP debug options preferences add-on. This add-on specifies the default
* debugger, executable and server for the workspace or the project specific.
*
* @author Shalom Gibly
*/
public class PHPDebugPreferencesBlock extends AbstractPHPPreferencePageBlock {
private static final String UNRESOLVED_PHP_VERSION = PHPDebugUIMessages.PHPDebugPreferencesBlock_3;
private static final String SERVERS_PAGE_ID = "org.eclipse.php.server.internal.ui.PHPServersPreferencePage"; //$NON-NLS-1$
private static final String PHP_EXE_PAGE_ID = "org.eclipse.php.debug.ui.preferencesphps.PHPsPreferencePage"; //$NON-NLS-1$
private Button fStopAtFirstLine;
private Combo fDefaultServer;
private Combo fDefaultPHPExe;
private Combo fDebugEncodingSettings;
private Combo fOutputEncodingSettings;
private PreferencePage propertyPage;
private URL autoGeneratedURL;
private Text fAutoGeneratedURLText;
private Text fDefaultBasePath;
private final boolean isPropertyPage;
private String defaultBasePath;
private IPageValidator pageValidator = null;
private Label fServerDebugger;
private Label fCLIDebugger;
private boolean isProjectSpecific;
public boolean isPropertyPage() {
return isPropertyPage;
}
public PHPDebugPreferencesBlock(boolean isPropertyPage) {
this.isPropertyPage = !isPropertyPage;
}
public void setCompositeAddon(Composite parent) {
Composite composite = addPageContents(parent);
addProjectPreferenceSubsection(composite);
}
public void initializeValues(PreferencePage propertyPage) {
this.propertyPage = propertyPage;
IPreferencesService service = Platform.getPreferencesService();
IScopeContext[] preferenceScopes = createPreferenceScopes(propertyPage);
IProject project = getProject(propertyPage);
boolean stopAtFirstLine = service.getBoolean(PHPDebugPlugin.ID, PHPDebugCorePreferenceNames.STOP_AT_FIRST_LINE,
true, null);
String serverName = ServersManager.getDefaultServer(null).getName();
String phpExeName = InstanceScope.INSTANCE.getNode(PHPDebugPlugin.ID)
.get(PHPDebugCorePreferenceNames.DEFAULT_PHP, null);
if (phpExeName == null || phpExeName.isEmpty()) {
phpExeName = PHPDebugUIMessages.PhpDebugPreferencePage_noExeDefined;
}
String transferEncoding = service.getString(PHPDebugPlugin.ID, PHPDebugCorePreferenceNames.TRANSFER_ENCODING,
null, null);
String outputEncoding = service.getString(PHPDebugPlugin.ID, PHPDebugCorePreferenceNames.OUTPUT_ENCODING, null,
null);
loadServers(fDefaultServer);
String serverDebuggerId = PHPDebugPlugin.getDebuggerId(serverName);
boolean exeLoaded = false;
// Update the values in case we have a project-specific settings.
if (preferenceScopes[0] instanceof ProjectScope && isProjectSpecific) {
IEclipsePreferences node = preferenceScopes[0].getNode(getPreferenceNodeQualifier());
if (node != null && project != null) {
if (getBasePathValue(project) == null || getBasePathValue(project).equals("")) { //$NON-NLS-1$
setBasePathValue(project, project.getName());
}
String projectServerName = ServersManager.getDefaultServer(project).getName();
if (!projectServerName.equals("")) { //$NON-NLS-1$
serverName = projectServerName;
stopAtFirstLine = node.getBoolean(PHPDebugCorePreferenceNames.STOP_AT_FIRST_LINE, stopAtFirstLine);
transferEncoding = node.get(PHPDebugCorePreferenceNames.TRANSFER_ENCODING, transferEncoding);
outputEncoding = node.get(PHPDebugCorePreferenceNames.OUTPUT_ENCODING, outputEncoding);
PHPexeItem item = PHPDebugPlugin.getPHPexeItem(project);
if (item != null && item.getName() != null) {
phpExeName = item.getName();
}
serverDebuggerId = PHPDebugPlugin.getDebuggerId(serverName);
loadPHPExes(fDefaultPHPExe, PHPexes.getInstance().getAllItems());
exeLoaded = true;
}
}
}
if (!exeLoaded) {
loadPHPExes(fDefaultPHPExe, PHPexes.getInstance().getAllItems());
}
fStopAtFirstLine.setSelection(stopAtFirstLine);
fDefaultServer.select(fDefaultServer.indexOf(serverName));
fServerDebugger.setText(PHPDebuggersRegistry.getDebuggerName(serverDebuggerId));
if (fDefaultPHPExe.indexOf(phpExeName) != -1) {
fDefaultPHPExe.select(fDefaultPHPExe.indexOf(phpExeName));
} else {
fDefaultPHPExe.select(0);
}
PHPexeItem item = PHPexes.getInstance().getItem(fDefaultPHPExe.getText());
if (item != null) {
fCLIDebugger.setText(PHPDebuggersRegistry.getDebuggerName(item.getDebuggerID()));
} else {
fCLIDebugger.setText(PHPDebugUIMessages.PhpDebugPreferencePage_noExeDefined);
}
fDebugEncodingSettings.setText(transferEncoding);
fOutputEncodingSettings.setText(outputEncoding);
if (isPropertyPage()) {
defaultBasePath = getBasePathValue(project);
initAutoGenerateListener();
fDefaultBasePath.setText(defaultBasePath);
}
}
private String getBasePathValue(IProject project) {
String basepath = PHPProjectPreferences.getDefaultBasePath(project);
return basepath;
}
private void setBasePathValue(IProject project, String value) {
PHPProjectPreferences.setDefaultBasePath(project, value);
}
public void initAutoGenerateListener() {
fDefaultBasePath.addModifyListener(new ModifyListener() {
public void modifyText(final ModifyEvent e) {
try {
try {
if (pageValidator != null)
pageValidator.validate(new BasePathValidator(fDefaultBasePath));
refreshAutoGeneratedBaseURLDisplay();
} catch (ControlValidationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
}
private String getSelectedServerName() {
return fDefaultServer.getText();
}
private void dispalyAutoGeneratedURL(URL url) {
fAutoGeneratedURLText.setText(url.toString());
}
public boolean performOK(boolean isProjectSpecific) {
savePreferences(isProjectSpecific);
return true;
}
public void performApply(boolean isProjectSpecific) {
performOK(isProjectSpecific);
}
public boolean performCancel() {
return true;
}
public void performDefaults() {
IEclipsePreferences prefs = PHPDebugPlugin.getDefaultPreferences();
fStopAtFirstLine.setSelection(prefs.getBoolean(PHPDebugCorePreferenceNames.STOP_AT_FIRST_LINE, true));
loadServers(fDefaultServer);
String serverDebuggerId = PHPDebugPlugin.getDebuggerId(fDefaultServer.getText());
fServerDebugger.setText(PHPDebuggersRegistry.getDebuggerName(serverDebuggerId));
loadPHPExes(fDefaultPHPExe, PHPexes.getInstance().getAllItems());
PHPexeItem item = PHPexes.getInstance().getItem(fDefaultPHPExe.getText());
if (item != null) {
fCLIDebugger.setText(PHPDebuggersRegistry.getDebuggerName(item.getDebuggerID()));
}
fDebugEncodingSettings.setText(prefs.get(PHPDebugCorePreferenceNames.TRANSFER_ENCODING, null));
fOutputEncodingSettings.setText(prefs.get(PHPDebugCorePreferenceNames.OUTPUT_ENCODING, null));
}
protected String getPreferenceNodeQualifier() {
return PHPProjectPreferences.getPreferenceNodeQualifier();
}
private void addProjectPreferenceSubsection(Composite composite) {
Group defultServerGroup = new Group(composite, SWT.NONE);
defultServerGroup.setText(PHPDebugUIMessages.PHPDebugPreferencesBlock_0);
defultServerGroup.setFont(composite.getFont());
GridLayout layout = new GridLayout();
layout.numColumns = 3;
layout.verticalSpacing = 10;
defultServerGroup.setLayout(layout);
defultServerGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
Label label = addLabelControl(defultServerGroup, PHPDebugUIMessages.PhpDebugPreferencePage_9,
ServersManager.DEFAULT_SERVER_PREFERENCES_KEY);
GridData gd = new GridData();
gd.widthHint = 90;
label.setLayoutData(gd);
fDefaultServer = addCombo(defultServerGroup, 2);
addLink(defultServerGroup, PHPDebugUIMessages.PhpDebugPreferencePage_serversLink, SERVERS_PAGE_ID);
label = addLabelControl(defultServerGroup, PHPDebugUIMessages.PHPDebugPreferencesBlock_ServerDebugger, null);
gd = new GridData();
gd.widthHint = 90;
label.setLayoutData(gd);
fServerDebugger = new Label(defultServerGroup, SWT.NONE);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalIndent = 2;
fServerDebugger.setLayoutData(gd);
Group defultCLIGroup = new Group(composite, SWT.NONE);
defultCLIGroup.setText(PHPDebugUIMessages.PHPDebugPreferencesBlock_CLISettings);
defultCLIGroup.setFont(composite.getFont());
layout = new GridLayout();
layout.numColumns = 3;
layout.verticalSpacing = 10;
defultCLIGroup.setLayout(layout);
defultCLIGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
label = addLabelControl(defultCLIGroup, PHPDebugUIMessages.PhpDebugPreferencePage_12,
PHPDebugCorePreferenceNames.DEFAULT_PHP);
gd = new GridData();
gd.widthHint = 90;
label.setLayoutData(gd);
fDefaultPHPExe = addCombo(defultCLIGroup, 2);
addLink(defultCLIGroup, PHPDebugUIMessages.PhpDebugPreferencePage_installedPHPsLink, PHP_EXE_PAGE_ID);
label = addLabelControl(defultCLIGroup, PHPDebugUIMessages.PHPDebugPreferencesBlock_CLIDebugger, null);
gd = new GridData();
gd.widthHint = 90;
label.setLayoutData(gd);
fCLIDebugger = new Label(defultCLIGroup, SWT.NONE);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalIndent = 2;
fCLIDebugger.setLayoutData(gd);
new Label(composite, SWT.NONE); // dummy label
Group encodingGroup = new Group(composite, SWT.NONE);
encodingGroup.setText(PHPDebugUIMessages.PHPDebugPreferencesBlock_2);
encodingGroup.setLayout(new GridLayout(2, false));
encodingGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
addLabelControl(encodingGroup, PHPDebugUIMessages.PHPDebugPreferencesAddon_debugTransferEncoding,
PHPDebugCorePreferenceNames.TRANSFER_ENCODING);
fDebugEncodingSettings = addEncodingSettings(encodingGroup);
addLabelControl(encodingGroup, PHPDebugUIMessages.PHPDebugPreferencesAddon_debugOutputEncoding,
PHPDebugCorePreferenceNames.OUTPUT_ENCODING);
fOutputEncodingSettings = addEncodingSettings(encodingGroup);
ModifyListener modifyListener = new ModifyListener() {
public void modifyText(ModifyEvent e) {
boolean isValid = isValidEncoding(((Combo) e.getSource()).getText());
if (isValid) {
propertyPage.setErrorMessage(null);
} else {
propertyPage.setErrorMessage(PHPDebugUIMessages.PHPDebugPreferencesAddon_unsupportedEncoding);
}
propertyPage.setValid(isValid);
}
};
fDebugEncodingSettings.addModifyListener(modifyListener);
fOutputEncodingSettings.addModifyListener(modifyListener);
new Label(composite, SWT.NONE); // dummy label
if (isPropertyPage())
createBaseURLGroup(composite);
fStopAtFirstLine = addCheckBox(composite, PHPDebugUIMessages.PhpDebugPreferencePage_1,
PHPDebugCorePreferenceNames.STOP_AT_FIRST_LINE, 0);
fDefaultPHPExe.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
PHPexeItem item = PHPexes.getInstance().getItem(fDefaultPHPExe.getText());
if (item != null) {
fCLIDebugger.setText(PHPDebuggersRegistry.getDebuggerName(item.getDebuggerID()));
} else {
fCLIDebugger.setText(PHPDebugUIMessages.PhpDebugPreferencePage_noExeDefined);
}
}
});
fDefaultServer.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
try {
PHPDebugPreferencesBlock.this.refreshAutoGeneratedBaseURLDisplay();
String serverDebuggerId = PHPDebugPlugin.getDebuggerId(fDefaultServer.getText());
fServerDebugger.setText(PHPDebuggersRegistry.getDebuggerName(serverDebuggerId));
} catch (MalformedURLException e1) {
// safe Malformed URL - exisiting server
}
}
});
}
private void createBaseURLGroup(Composite composite) {
Group baseURLGroup = createGroup(composite, PHPDebugUIMessages.PHPDebugPreferencesBlock_9);
addBasePathLabelAndText(baseURLGroup);
addBaseURLLabelAndText(baseURLGroup);
}
private void addBaseURLLabelAndText(Group baseURLGroup) {
addLabelControl(baseURLGroup, PHPDebugUIMessages.PHPDebugPreferencesBlock_10,
PHPDebugCorePreferenceNames.TRANSFER_ENCODING);
addBaseURLText(baseURLGroup);
}
private URL generateBaseURL(Server server, IPath basePath) throws MalformedURLException {
URL serverUrl = server.getRootURL();
IPath file = new Path(serverUrl.getFile());
if (!file.isEmpty()) {
file = file.append(basePath);
} else {
file = basePath;
}
URL generatedBaseURL = new URL(serverUrl.getProtocol(), serverUrl.getHost(), serverUrl.getPort(),
file.toString());
return generatedBaseURL;
}
private Text addBaseURLText(Composite parent) {
fAutoGeneratedURLText = addText(parent, 2, SWT.RESIZE | SWT.READ_ONLY);
return fAutoGeneratedURLText;
}
private void addBasePathLabelAndText(Group baseURLGroup) {
addLabelControl(baseURLGroup, PHPDebugUIMessages.PHPDebugPreferencesBlock_11,
PHPDebugCorePreferenceNames.TRANSFER_ENCODING);
addBasePathText(baseURLGroup);
}
private Text addBasePathText(Composite parent) {
fDefaultBasePath = addText(parent, 2, SWT.BORDER | SWT.RESIZE);
return fDefaultBasePath;
}
private IPath getDefaultBasePath() {
if (fDefaultBasePath != null)
return new Path(fDefaultBasePath.getText());
return null;
}
private Server getDefaultServer() {
return ServersManager.getServer(fDefaultServer.getText());
}
private void displayDefaultBaseURL(URL generatedBaseURL) {
fAutoGeneratedURLText.setText(generatedBaseURL.toString());
}
private Group createGroup(Composite composite, String groupName) {
Group newGroup = new Group(composite, SWT.NONE);
newGroup.setText(groupName);
newGroup.setLayout(new GridLayout(2, false));
newGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
return newGroup;
}
private void loadPHPExes(Combo combo, PHPexeItem[] items) {
combo.removeAll();
if (items == null || items.length == 0) {
combo.add(PHPDebugUIMessages.PhpDebugPreferencePage_noExeDefined);
combo.select(0);
return;
}
for (PHPexeItem element : items) {
String name = element.getName();
if (null == name)
name = UNRESOLVED_PHP_VERSION;
combo.add(name);
}
combo.select(0);
}
private void loadServers(Combo combo) {
combo.removeAll();
Server[] servers = ServersManager.getServers();
if (servers != null) {
for (Server element : servers) {
combo.add(element.getName());
}
// select first item in list
if (combo.getItemCount() > 0) {
combo.select(0);
}
}
}
private void addLink(Composite parent, String label, final String propertyPageID) {
Link link = new Link(parent, SWT.NONE);
link.setFont(parent.getFont());
link.setLayoutData(new GridData(SWT.END, SWT.BEGINNING, false, false));
link.setText(label);
link.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(
PHPDebugPreferencesBlock.this.propertyPage.getShell(), propertyPageID, null, null);
dialog.setBlockOnOpen(true);
dialog.addPageChangedListener(new IPageChangedListener() {
public void pageChanged(PageChangedEvent event) {
refreshDebuggers();
}
});
dialog.open();
if (!fDefaultServer.isDisposed() && !fDefaultPHPExe.isDisposed()) {
refreshDebuggers();
}
}
});
}
private void refreshDebuggers() {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
String selectedServer = fDefaultServer.getText();
loadServers(fDefaultServer);
int index = fDefaultServer.indexOf(selectedServer);
if (index != -1) {
fDefaultServer.select(index);
}
String serverDebuggerId = PHPDebugPlugin.getDebuggerId(fDefaultServer.getText());
fServerDebugger.setText(PHPDebuggersRegistry.getDebuggerName(serverDebuggerId));
String selectedPHP = fDefaultPHPExe.getText();
loadPHPExes(fDefaultPHPExe, PHPexes.getInstance().getAllItems());
index = fDefaultPHPExe.indexOf(selectedPHP);
fDefaultPHPExe.select(index != -1 ? index : 0);
PHPexeItem item = PHPexes.getInstance().getItem(fDefaultPHPExe.getText());
if (item != null) {
fCLIDebugger.setText(PHPDebuggersRegistry.getDebuggerName(item.getDebuggerID()));
} else {
fCLIDebugger.setText(PHPDebugUIMessages.PhpDebugPreferencePage_noExeDefined);
}
}
});
}
private void selectComboItem(Combo combo, int itemIndex) {
if (itemIndex < 0) {
if (combo.getItemCount() > 0) {
combo.select(0);
}
} else {
combo.select(itemIndex);
}
}
private Combo addEncodingSettings(Composite parent) {
Combo encodingCombo = new Combo(parent, SWT.NONE);
GridData data = new GridData();
encodingCombo.setLayoutData(data);
List encodings = IDEEncoding.getIDEEncodings();
String[] encodingStrings = new String[encodings.size()];
encodings.toArray(encodingStrings);
encodingCombo.setItems(encodingStrings);
return encodingCombo;
}
private Combo addCombo(Composite parent, int horizontalIndent) {
Combo combo = new Combo(parent, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalIndent = horizontalIndent;
combo.setLayoutData(gd);
return combo;
}
private Text addText(Composite parent, int horizontalIndent, int style) {
Text text = new Text(parent, style);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalIndent = horizontalIndent;
text.setLayoutData(gd);
return text;
}
private void savePreferences(boolean isProjectSpecific) {
// TODO - Might do the same for the default server
IEclipsePreferences prefs = PHPDebugPlugin.getInstancePreferences();
IScopeContext[] preferenceScopes = createPreferenceScopes(propertyPage);
IEclipsePreferences debugUINode = preferenceScopes[0].getNode(getPreferenceNodeQualifier());
String phpExe = fDefaultPHPExe.getText();
IProject project = getProject(propertyPage);
if (isProjectSpecific && debugUINode != null && preferenceScopes[0] instanceof ProjectScope
&& project != null) {
debugUINode.putBoolean(PHPDebugCorePreferenceNames.STOP_AT_FIRST_LINE, fStopAtFirstLine.getSelection());
if (!PHPDebugUIMessages.PhpDebugPreferencePage_noExeDefined.equals(phpExe)) {
debugUINode.put(PHPDebugCorePreferenceNames.DEFAULT_PHP, phpExe);
}
debugUINode.put(PHPDebugCorePreferenceNames.TRANSFER_ENCODING, fDebugEncodingSettings.getText());
debugUINode.put(PHPDebugCorePreferenceNames.OUTPUT_ENCODING, fOutputEncodingSettings.getText());
ServersManager.setDefaultServer(project, fDefaultServer.getText());
Server server = ServersManager.getServer(fDefaultServer.getText());
setBasePathValue(project, fDefaultBasePath.getText());
} else {
if (project == null) {
// Workspace settings
prefs.putBoolean(PHPDebugCorePreferenceNames.STOP_AT_FIRST_LINE, fStopAtFirstLine.getSelection());
prefs.put(PHPDebugCorePreferenceNames.TRANSFER_ENCODING, fDebugEncodingSettings.getText());
prefs.put(PHPDebugCorePreferenceNames.OUTPUT_ENCODING, fOutputEncodingSettings.getText());
if (!PHPDebugUIMessages.PhpDebugPreferencePage_noExeDefined.equals(phpExe)) {
prefs.put(PHPDebugCorePreferenceNames.DEFAULT_PHP, phpExe);
}
ServersManager.setDefaultServer(project, fDefaultServer.getText());
} else {
if (debugUINode != null) {
// Removed a project specific
debugUINode.remove(PHPDebugCorePreferenceNames.STOP_AT_FIRST_LINE);
debugUINode.remove(PHPDebugCorePreferenceNames.DEFAULT_PHP);
ServersManager.setDefaultServer(project, (Server) null);
debugUINode.remove(PHPDebugCorePreferenceNames.TRANSFER_ENCODING);
debugUINode.remove(PHPDebugCorePreferenceNames.OUTPUT_ENCODING);
// if (defaultBasePath != null) {
// prefs.put(PHPDebugCorePreferenceNames.DEFAULT_BASE_PATH,
// defaultBasePath);
// }
}
}
}
try {
if (debugUINode != null) {
debugUINode.flush();
}
prefs.flush();
} catch (BackingStoreException e) {
Logger.logException(e);
}
}
private String getServerDebuggerId() {
return PHPDebugPlugin.getDebuggerId(fDefaultServer.getText());
}
/**
* Returns whether or not the given encoding is valid.
*
* @param enc
* the encoding to validate
* @return <code>true</code> if the encoding is valid, <code>false</code>
* otherwise
* @see org.eclipse.ui.ide.dialogs.AbstractEncodingFieldEditor.
* isValidEncoding (String)
*/
private boolean isValidEncoding(String enc) {
try {
return Charset.isSupported(enc);
} catch (IllegalCharsetNameException e) {
// This is a valid exception
return false;
}
}
private void resolveAndSetBaseURL() throws MalformedURLException {
Server server = getDefaultServer();
IPath basePath = getDefaultBasePath();
if (basePath != null) {
URL baseURL = generateBaseURL(server, basePath);
displayDefaultBaseURL(baseURL);
}
}
private void refreshAutoGeneratedBaseURLDisplay() throws MalformedURLException {
if (!isPropertyPage) {
return;
}
IPath path = new Path(fDefaultBasePath.getText());
defaultBasePath = fDefaultBasePath.getText();
Server server = ServersManager.getServer(getSelectedServerName());
autoGeneratedURL = generateBaseURL(server, path);
dispalyAutoGeneratedURL(autoGeneratedURL);
}
public void setValidator(IPageValidator pageValidator) {
this.pageValidator = pageValidator;
}
void setIsProjectSpecific(boolean isProjectSpecific) {
this.isProjectSpecific = isProjectSpecific;
}
}