/*******************************************************************************
* Copyright (c) 2012, 2013 Original authors 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:
* Original authors and others - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.style.editor;
import org.eclipse.nebula.widgets.nattable.Messages;
import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
import org.eclipse.nebula.widgets.nattable.style.HorizontalAlignmentEnum;
import org.eclipse.nebula.widgets.nattable.style.Style;
import org.eclipse.nebula.widgets.nattable.style.VerticalAlignmentEnum;
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
/**
* EditorPanel for editing the core style attributes.
*/
public class CellStyleEditorPanel extends AbstractEditorPanel<Style> {
private static final Color DEFAULT_FG_COLOR = GUIHelper.COLOR_BLACK;
private static final Color DEFAULT_BG_COLOR = GUIHelper.COLOR_WHITE;
private ColorPicker backgroundColorPicker;
private ColorPicker foregroundColorPicker;
private FontPicker fontPicker;
private HorizontalAlignmentPicker horizontalAlignmentPicker;
private VerticalAlignmentPicker verticalAlignmentPicker;
private Color origBgColor;
private Color origFgColor;
private HorizontalAlignmentEnum origHAlign;
private VerticalAlignmentEnum origVAlign;
public CellStyleEditorPanel(Composite parent, int style) {
super(parent, style);
initComponents();
}
private void initComponents() {
GridLayout gridLayout = new GridLayout(2, false);
gridLayout.marginLeft = 10;
setLayout(gridLayout);
new Label(this, SWT.NONE).setText(Messages
.getString("CellStyleEditorPanel.backgroundColor")); //$NON-NLS-1$
this.backgroundColorPicker = new ColorPicker(this, DEFAULT_BG_COLOR);
new Label(this, SWT.NONE).setText(Messages
.getString("CellStyleEditorPanel.foregroundColor")); //$NON-NLS-1$
this.foregroundColorPicker = new ColorPicker(this, DEFAULT_FG_COLOR);
new Label(this, SWT.NONE).setText(Messages
.getString("CellStyleEditorPanel.font")); //$NON-NLS-1$
this.fontPicker = new FontPicker(this, GUIHelper.DEFAULT_FONT);
this.fontPicker.setLayoutData(new GridData(80, 20));
new Label(this, SWT.NONE).setText(Messages
.getString("CellStyleEditorPanel.horizontalAlignment")); //$NON-NLS-1$
this.horizontalAlignmentPicker = new HorizontalAlignmentPicker(this,
HorizontalAlignmentEnum.CENTER);
new Label(this, SWT.NONE).setText(Messages
.getString("CellStyleEditorPanel.verticalAlignment")); //$NON-NLS-1$
this.verticalAlignmentPicker = new VerticalAlignmentPicker(this,
VerticalAlignmentEnum.MIDDLE);
}
@Override
public String getEditorName() {
return Messages.getString("CellStyleEditorPanel.editorName"); //$NON-NLS-1$
}
@Override
public void edit(Style style) throws Exception {
this.origBgColor = style
.getAttributeValue(CellStyleAttributes.BACKGROUND_COLOR);
if (this.origBgColor == null) {
this.origBgColor = GUIHelper.COLOR_WHITE;
}
this.backgroundColorPicker.setSelectedColor(this.origBgColor);
this.origFgColor = style
.getAttributeValue(CellStyleAttributes.FOREGROUND_COLOR);
if (this.origFgColor == null) {
this.origFgColor = GUIHelper.COLOR_BLACK;
}
this.foregroundColorPicker.setSelectedColor(this.origFgColor);
this.fontPicker.setOriginalFont(style
.getAttributeValue(CellStyleAttributes.FONT));
this.origHAlign = style
.getAttributeValue(CellStyleAttributes.HORIZONTAL_ALIGNMENT);
if (this.origHAlign == null) {
this.origHAlign = HorizontalAlignmentEnum.CENTER;
}
this.horizontalAlignmentPicker.setSelectedAlignment(this.origHAlign);
this.origVAlign = style
.getAttributeValue(CellStyleAttributes.VERTICAL_ALIGNMENT);
if (this.origVAlign == null) {
this.origVAlign = VerticalAlignmentEnum.MIDDLE;
}
this.verticalAlignmentPicker.setSelectedAlignment(this.origVAlign);
}
@Override
public Style getNewValue() {
Style newStyle = new Style();
Color bgColor = this.backgroundColorPicker.getSelectedColor();
newStyle.setAttributeValue(CellStyleAttributes.BACKGROUND_COLOR,
bgColor);
Color fgColor = this.foregroundColorPicker.getSelectedColor();
newStyle.setAttributeValue(CellStyleAttributes.FOREGROUND_COLOR,
fgColor);
Font font = this.fontPicker.getSelectedFont();
newStyle.setAttributeValue(CellStyleAttributes.FONT, font);
HorizontalAlignmentEnum hAlign = this.horizontalAlignmentPicker
.getSelectedAlignment();
newStyle.setAttributeValue(CellStyleAttributes.HORIZONTAL_ALIGNMENT,
hAlign);
VerticalAlignmentEnum vAlign = this.verticalAlignmentPicker
.getSelectedAlignment();
newStyle.setAttributeValue(CellStyleAttributes.VERTICAL_ALIGNMENT,
vAlign);
return newStyle;
}
}