| /******************************************************************************* |
| * Copyright (c) 2006 Sybase, Inc. 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: |
| * Sybase, Inc. - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jst.pagedesigner.ui.dialogs; |
| |
| import org.eclipse.jface.preference.PreferencePage; |
| import org.eclipse.jst.jsf.common.ui.internal.dialogfield.ColorButtonDialogField; |
| import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField; |
| import org.eclipse.jst.jsf.common.ui.internal.dialogfield.IDialogFieldApplyListener; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.events.ModifyEvent; |
| import org.eclipse.swt.events.ModifyListener; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| import org.eclipse.swt.widgets.Group; |
| import org.eclipse.swt.widgets.Label; |
| import org.eclipse.wst.css.core.internal.util.declaration.CSSPropertyContext; |
| import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement; |
| |
| /** |
| * @author mengbo |
| * @version 1.5 |
| */ |
| public class BorderPreferencePage extends PreferencePage { |
| private CSSPropertyContext _style; |
| |
| private StyleCombo _styleTopCombo, _styleRightCombo, _styleBottomCombo, |
| _styleLeftCombo; |
| |
| private StyleCombo _widthTopNumberCombo, _widthRightNumberCombo, |
| _widthBottomNumberCombo, _widthLeftNumberCombo; |
| |
| private StyleCombo _widthTopUnitCombo, _widthRightUnitCombo, |
| _widthBottomUnitCombo, _widthLeftUnitCombo; |
| |
| private ColorButtonDialogField _colorTopField, _colorRightField, |
| _colorBottomField, _colorLeftField; |
| |
| /** |
| * @param element |
| * @param style |
| */ |
| public BorderPreferencePage(IDOMElement element, CSSPropertyContext style) { |
| super(); |
| _style = style; |
| |
| setTitle(DialogsMessages.getString("BorderPreferencePage.Title")); //$NON-NLS-1$ |
| } |
| |
| /** |
| * @see org.eclipse.jface.preference. |
| * PreferencePage#createContents(Composite) |
| */ |
| protected Control createContents(Composite parent) { |
| GridLayout layout; |
| GridData data; |
| |
| Composite top = new Composite(parent, SWT.NONE); |
| layout = new GridLayout(1, false); |
| data = new GridData(GridData.FILL_BOTH); |
| top.setLayout(layout); |
| top.setLayoutData(data); |
| |
| Group styleGroup = new Group(top, SWT.NONE); |
| styleGroup.setText(DialogsMessages |
| .getString("BorderPreferencePage.Style")); //$NON-NLS-1$ |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| styleGroup.setLayoutData(data); |
| layout = new GridLayout(2, false); |
| styleGroup.setLayout(layout); |
| |
| Label styleTopLabel = new Label(styleGroup, SWT.NONE); |
| styleTopLabel.setText(DialogsMessages |
| .getString("BorderPreferencePage.Top")); //$NON-NLS-1$ |
| data = new GridData(GridData.HORIZONTAL_ALIGN_END); |
| styleTopLabel.setLayoutData(data); |
| |
| _styleTopCombo = new StyleCombo(styleGroup, SWT.NONE); |
| _styleTopCombo.setItems(IStyleConstants.BORDER_STYLE); |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _styleTopCombo.setLayoutData(data); |
| _styleTopCombo.addModifyListener(new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| String style = _styleTopCombo.getText(); |
| _style.setBorderTopStyle(style); |
| } |
| }); |
| |
| Label styleRightLabel = new Label(styleGroup, SWT.NONE); |
| styleRightLabel.setText(DialogsMessages |
| .getString("BorderPreferencePage.Right")); //$NON-NLS-1$ |
| data = new GridData(GridData.HORIZONTAL_ALIGN_END); |
| styleRightLabel.setLayoutData(data); |
| |
| _styleRightCombo = new StyleCombo(styleGroup, SWT.NONE); |
| _styleRightCombo.setItems(IStyleConstants.BORDER_STYLE); |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _styleRightCombo.setLayoutData(data); |
| _styleRightCombo.addModifyListener(new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| String style = _styleRightCombo.getText(); |
| _style.setBorderRightStyle(style); |
| } |
| }); |
| |
| Label styleBottomLabel = new Label(styleGroup, SWT.NONE); |
| styleBottomLabel.setText(DialogsMessages |
| .getString("BorderPreferencePage.Bottom")); //$NON-NLS-1$ |
| data = new GridData(GridData.HORIZONTAL_ALIGN_END); |
| styleBottomLabel.setLayoutData(data); |
| |
| _styleBottomCombo = new StyleCombo(styleGroup, SWT.NONE); |
| _styleBottomCombo.setItems(IStyleConstants.BORDER_STYLE); |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _styleBottomCombo.setLayoutData(data); |
| _styleBottomCombo.addModifyListener(new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| String style = _styleBottomCombo.getText(); |
| _style.setBorderBottomStyle(style); |
| } |
| }); |
| |
| Label styleLeftLabel = new Label(styleGroup, SWT.NONE); |
| styleLeftLabel.setText(DialogsMessages |
| .getString("BorderPreferencePage.Left")); //$NON-NLS-1$ |
| data = new GridData(GridData.HORIZONTAL_ALIGN_END); |
| styleLeftLabel.setLayoutData(data); |
| |
| _styleLeftCombo = new StyleCombo(styleGroup, SWT.NONE); |
| _styleLeftCombo.setItems(IStyleConstants.BORDER_STYLE); |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _styleLeftCombo.setLayoutData(data); |
| _styleLeftCombo.addModifyListener(new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| String style = _styleLeftCombo.getText(); |
| _style.setBorderLeftStyle(style); |
| } |
| }); |
| |
| Group colorGroup = new Group(top, SWT.NONE); |
| colorGroup.setText(DialogsMessages |
| .getString("BorderPreferencePage.Color")); //$NON-NLS-1$ |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| colorGroup.setLayoutData(data); |
| layout = new GridLayout(3, false); |
| colorGroup.setLayout(layout); |
| |
| _colorTopField = new ColorButtonDialogField(SWT.BORDER, new ColorUtil()); |
| _colorTopField.setLabelText(DialogsMessages |
| .getString("BorderPreferencePage.Top")); //$NON-NLS-1$ |
| |
| data = new GridData(GridData.HORIZONTAL_ALIGN_END); |
| _colorTopField.getLabelControl(null, colorGroup).setLayoutData(data); |
| |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _colorTopField.getComboControl(null, colorGroup).setLayoutData(data); |
| |
| data = new GridData(); |
| _colorTopField.getChangeControl(null, colorGroup).setLayoutData(data); |
| _colorTopField |
| .setDialogFieldApplyListener(new IDialogFieldApplyListener() { |
| public void dialogFieldApplied(DialogField field) { |
| String color = _colorTopField.getText(); |
| _style.setBorderTopColor(color); |
| } |
| }); |
| |
| _colorRightField = new ColorButtonDialogField(SWT.BORDER, new ColorUtil()); |
| _colorRightField.setLabelText(DialogsMessages |
| .getString("BorderPreferencePage.Right")); //$NON-NLS-1$ |
| data = new GridData(GridData.HORIZONTAL_ALIGN_END); |
| _colorRightField.getLabelControl(null, colorGroup).setLayoutData(data); |
| |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _colorRightField.getComboControl(null, colorGroup).setLayoutData(data); |
| |
| data = new GridData(); |
| _colorRightField.getChangeControl(null, colorGroup).setLayoutData(data); |
| _colorRightField |
| .setDialogFieldApplyListener(new IDialogFieldApplyListener() { |
| public void dialogFieldApplied(DialogField field) { |
| String color = _colorRightField.getText(); |
| _style.setBorderRightColor(color); |
| } |
| }); |
| |
| _colorBottomField = new ColorButtonDialogField(SWT.BORDER, new ColorUtil()); |
| _colorBottomField.setLabelText(DialogsMessages |
| .getString("BorderPreferencePage.Bottom")); //$NON-NLS-1$ |
| data = new GridData(GridData.HORIZONTAL_ALIGN_END); |
| _colorBottomField.getLabelControl(null, colorGroup).setLayoutData(data); |
| |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _colorBottomField.getComboControl(null, colorGroup).setLayoutData(data); |
| |
| data = new GridData(); |
| _colorBottomField.getChangeControl(null, colorGroup) |
| .setLayoutData(data); |
| _colorBottomField |
| .setDialogFieldApplyListener(new IDialogFieldApplyListener() { |
| public void dialogFieldApplied(DialogField field) { |
| String color = _colorBottomField.getText(); |
| _style.setBorderBottomColor(color); |
| } |
| }); |
| |
| _colorLeftField = new ColorButtonDialogField(SWT.BORDER, new ColorUtil()); |
| _colorLeftField.setLabelText(DialogsMessages |
| .getString("BorderPreferencePage.Left")); //$NON-NLS-1$ |
| data = new GridData(GridData.HORIZONTAL_ALIGN_END); |
| _colorLeftField.getLabelControl(null, colorGroup).setLayoutData(data); |
| |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _colorLeftField.getComboControl(null, colorGroup).setLayoutData(data); |
| |
| data = new GridData(); |
| _colorLeftField.getChangeControl(null, colorGroup).setLayoutData(data); |
| _colorLeftField |
| .setDialogFieldApplyListener(new IDialogFieldApplyListener() { |
| public void dialogFieldApplied(DialogField field) { |
| String color = _colorLeftField.getText(); |
| _style.setBorderLeftColor(color); |
| } |
| }); |
| |
| Group widthGroup = new Group(top, SWT.NONE); |
| widthGroup.setText(DialogsMessages |
| .getString("BorderPreferencePage.Width")); //$NON-NLS-1$ |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| widthGroup.setLayoutData(data); |
| layout = new GridLayout(3, false); |
| widthGroup.setLayout(layout); |
| |
| Label widthTopLabel = new Label(widthGroup, SWT.NONE); |
| widthTopLabel.setText(DialogsMessages |
| .getString("BorderPreferencePage.Top")); //$NON-NLS-1$ |
| data = new GridData(GridData.HORIZONTAL_ALIGN_END); |
| widthTopLabel.setLayoutData(data); |
| |
| _widthTopNumberCombo = new StyleCombo(widthGroup, SWT.NONE); |
| _widthTopNumberCombo.setItems(IStyleConstants.BORDER_WIDTH); |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _widthTopNumberCombo.setLayoutData(data); |
| _widthTopNumberCombo.addModifyListener(new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| _widthTopUnitCombo.setEnabled(true); |
| try { |
| Integer.valueOf(_widthTopNumberCombo.getText()); |
| } catch (NumberFormatException ex) { |
| _widthTopUnitCombo.setEnabled(false); |
| } |
| |
| String width = _widthTopNumberCombo.getText(); |
| if (_widthTopUnitCombo.isEnabled()) { |
| width += _widthTopUnitCombo.getText(); |
| } |
| |
| _style.setBorderTopWidth(width); |
| } |
| }); |
| |
| _widthTopUnitCombo = new StyleCombo(widthGroup, SWT.READ_ONLY); |
| _widthTopUnitCombo.setItems(IStyleConstants.SIZE_UNIT); |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _widthTopUnitCombo.setLayoutData(data); |
| _widthTopUnitCombo.select(0); |
| _widthTopUnitCombo.setEnabled(false); |
| _widthTopUnitCombo.addModifyListener(new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| String width = _widthTopNumberCombo.getText(); |
| if (_widthTopUnitCombo.isEnabled()) { |
| width += _widthTopUnitCombo.getText(); |
| } |
| |
| _style.setBorderTopWidth(width); |
| } |
| }); |
| |
| Label widthRightLabel = new Label(widthGroup, SWT.NONE); |
| widthRightLabel.setText(DialogsMessages |
| .getString("BorderPreferencePage.Right")); //$NON-NLS-1$ |
| data = new GridData(GridData.HORIZONTAL_ALIGN_END); |
| widthRightLabel.setLayoutData(data); |
| |
| _widthRightNumberCombo = new StyleCombo(widthGroup, SWT.NONE); |
| _widthRightNumberCombo.setItems(IStyleConstants.BORDER_WIDTH); |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _widthRightNumberCombo.setLayoutData(data); |
| _widthRightNumberCombo.addModifyListener(new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| _widthRightUnitCombo.setEnabled(true); |
| try { |
| Integer.valueOf(_widthRightNumberCombo.getText()); |
| } catch (NumberFormatException ex) { |
| _widthRightUnitCombo.setEnabled(false); |
| } |
| |
| String width = _widthRightNumberCombo.getText(); |
| if (_widthRightUnitCombo.isEnabled()) { |
| width += _widthRightUnitCombo.getText(); |
| } |
| |
| _style.setBorderRightWidth(width); |
| } |
| }); |
| |
| _widthRightUnitCombo = new StyleCombo(widthGroup, SWT.READ_ONLY); |
| _widthRightUnitCombo.setItems(IStyleConstants.SIZE_UNIT); |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _widthRightUnitCombo.setLayoutData(data); |
| _widthRightUnitCombo.select(0); |
| _widthRightUnitCombo.setEnabled(false); |
| _widthRightUnitCombo.addModifyListener(new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| String width = _widthRightNumberCombo.getText(); |
| if (_widthRightUnitCombo.isEnabled()) { |
| width += _widthRightUnitCombo.getText(); |
| } |
| |
| _style.setBorderRightWidth(width); |
| } |
| }); |
| |
| Label widthBottomLabel = new Label(widthGroup, SWT.NONE); |
| widthBottomLabel.setText(DialogsMessages |
| .getString("BorderPreferencePage.Bottom")); //$NON-NLS-1$ |
| data = new GridData(GridData.HORIZONTAL_ALIGN_END); |
| widthBottomLabel.setLayoutData(data); |
| |
| _widthBottomNumberCombo = new StyleCombo(widthGroup, SWT.NONE); |
| _widthBottomNumberCombo.setItems(IStyleConstants.BORDER_WIDTH); |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _widthBottomNumberCombo.setLayoutData(data); |
| _widthBottomNumberCombo.addModifyListener(new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| _widthBottomUnitCombo.setEnabled(true); |
| try { |
| Integer.valueOf(_widthBottomNumberCombo.getText()); |
| } catch (NumberFormatException ex) { |
| _widthBottomUnitCombo.setEnabled(false); |
| } |
| |
| String width = _widthBottomNumberCombo.getText(); |
| if (_widthBottomUnitCombo.isEnabled()) { |
| width += _widthBottomUnitCombo.getText(); |
| } |
| |
| _style.setBorderBottomWidth(width); |
| } |
| }); |
| |
| _widthBottomUnitCombo = new StyleCombo(widthGroup, SWT.READ_ONLY); |
| _widthBottomUnitCombo.setItems(IStyleConstants.SIZE_UNIT); |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _widthBottomUnitCombo.setLayoutData(data); |
| _widthBottomUnitCombo.select(0); |
| _widthBottomUnitCombo.setEnabled(false); |
| _widthBottomUnitCombo.addModifyListener(new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| String width = _widthBottomNumberCombo.getText(); |
| if (_widthBottomUnitCombo.isEnabled()) { |
| width += _widthBottomUnitCombo.getText(); |
| } |
| |
| _style.setBorderBottomWidth(width); |
| } |
| }); |
| |
| Label widthLeftLabel = new Label(widthGroup, SWT.NONE); |
| widthLeftLabel.setText(DialogsMessages |
| .getString("BorderPreferencePage.Left")); //$NON-NLS-1$ |
| data = new GridData(GridData.HORIZONTAL_ALIGN_END); |
| widthLeftLabel.setLayoutData(data); |
| |
| _widthLeftNumberCombo = new StyleCombo(widthGroup, SWT.NONE); |
| _widthLeftNumberCombo.setItems(IStyleConstants.BORDER_WIDTH); |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _widthLeftNumberCombo.setLayoutData(data); |
| _widthLeftNumberCombo.addModifyListener(new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| _widthLeftUnitCombo.setEnabled(true); |
| try { |
| Integer.valueOf(_widthLeftNumberCombo.getText()); |
| } catch (NumberFormatException ex) { |
| _widthLeftUnitCombo.setEnabled(false); |
| } |
| |
| String width = _widthLeftNumberCombo.getText(); |
| if (_widthLeftUnitCombo.isEnabled()) { |
| width += _widthLeftUnitCombo.getText(); |
| } |
| |
| _style.setBorderLeftWidth(width); |
| } |
| }); |
| |
| _widthLeftUnitCombo = new StyleCombo(widthGroup, SWT.READ_ONLY); |
| _widthLeftUnitCombo.setItems(IStyleConstants.SIZE_UNIT); |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| _widthLeftUnitCombo.setLayoutData(data); |
| _widthLeftUnitCombo.select(0); |
| _widthLeftUnitCombo.setEnabled(false); |
| _widthLeftUnitCombo.addModifyListener(new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| String width = _widthLeftNumberCombo.getText(); |
| if (_widthLeftUnitCombo.isEnabled()) { |
| width += _widthLeftUnitCombo.getText(); |
| } |
| |
| _style.setBorderLeftWidth(width); |
| } |
| }); |
| |
| initializeControls(); |
| |
| return top; |
| } |
| |
| private void initializeControls() { |
| // border-style |
| String style = _style.getBorderTopStyle(); |
| if (!isEmptyString(style)) { |
| int index = _styleTopCombo.indexOf(style); |
| if (index != -1) { |
| _styleTopCombo.select(index); |
| } else { |
| _styleTopCombo.setText(style); |
| } |
| } |
| style = _style.getBorderRightStyle(); |
| if (!isEmptyString(style)) { |
| int index = _styleRightCombo.indexOf(style); |
| if (index != -1) { |
| _styleRightCombo.select(index); |
| } else { |
| _styleRightCombo.setText(style); |
| } |
| } |
| style = _style.getBorderBottomStyle(); |
| if (!isEmptyString(style)) { |
| int index = _styleBottomCombo.indexOf(style); |
| if (index != -1) { |
| _styleBottomCombo.select(index); |
| } else { |
| _styleBottomCombo.setText(style); |
| } |
| } |
| style = _style.getBorderLeftStyle(); |
| if (!isEmptyString(style)) { |
| int index = _styleLeftCombo.indexOf(style); |
| if (index != -1) { |
| _styleLeftCombo.select(index); |
| } else { |
| _styleLeftCombo.setText(style); |
| } |
| } |
| |
| // border-color |
| String color = _style.getBorderTopColor(); |
| if (!isEmptyString(color)) { |
| _colorTopField.setTextWithoutUpdate(color); |
| } |
| color = _style.getBorderRightColor(); |
| if (!isEmptyString(color)) { |
| _colorRightField.setTextWithoutUpdate(color); |
| } |
| color = _style.getBorderBottomColor(); |
| if (!isEmptyString(color)) { |
| _colorBottomField.setTextWithoutUpdate(color); |
| } |
| color = _style.getBorderLeftColor(); |
| if (!isEmptyString(color)) { |
| _colorLeftField.setTextWithoutUpdate(color); |
| } |
| |
| // border-width |
| String width = _style.getBorderTopWidth(); |
| if (!isEmptyString(width)) { |
| int index = _widthTopNumberCombo.indexOf(width); |
| if (index != -1) { |
| _widthTopNumberCombo.select(index); |
| } else { |
| _widthTopNumberCombo.setText(width); |
| } |
| } |
| width = _style.getBorderRightWidth(); |
| if (!isEmptyString(width)) { |
| int index = _widthRightNumberCombo.indexOf(width); |
| if (index != -1) { |
| _widthRightNumberCombo.select(index); |
| } else { |
| _widthRightNumberCombo.setText(width); |
| } |
| } |
| width = _style.getBorderBottomWidth(); |
| if (!isEmptyString(width)) { |
| int index = _widthBottomNumberCombo.indexOf(width); |
| if (index != -1) { |
| _widthBottomNumberCombo.select(index); |
| } else { |
| _widthBottomNumberCombo.setText(width); |
| } |
| } |
| width = _style.getBorderLeftWidth(); |
| if (!isEmptyString(width)) { |
| int index = _widthLeftNumberCombo.indexOf(width); |
| if (index != -1) { |
| _widthLeftNumberCombo.select(index); |
| } else { |
| _widthLeftNumberCombo.setText(width); |
| } |
| } |
| } |
| |
| public void setVisible(boolean visible) { |
| super.setVisible(visible); |
| |
| getApplyButton().setVisible(false); |
| getDefaultsButton().setVisible(false); |
| } |
| |
| private boolean isEmptyString(String str) { |
| if (str == null || str.length() == 0) { |
| return true; |
| } |
| return false; |
| } |
| } |