blob: 535983c4a8e40cdc895c4d5a378c1556c26afd4f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 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.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.nebula.widgets.nattable.Messages;
import org.eclipse.nebula.widgets.nattable.style.BorderStyle;
import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
import org.eclipse.nebula.widgets.nattable.style.Style;
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.ShellAdapter;
import org.eclipse.swt.events.ShellEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
public class ColumnStyleEditorDialog extends AbstractStyleEditorDialog {
private static final Log log = LogFactory.getLog(ColumnStyleEditorDialog.class);
// Tabs in the dialog
private CellStyleEditorPanel cellStyleEditorPanel;
private BorderStyleEditorPanel borderStyleEditorPanel;
// These are populated on OK button press
protected Style newColumnCellStyle;
protected BorderStyle newBorderStyle;
private final Style columnStyle;
public ColumnStyleEditorDialog(Shell parent, Style columnCellStyle) {
super(parent);
this.columnStyle = columnCellStyle;
this.newColumnCellStyle = columnCellStyle;
if (columnCellStyle != null) {
this.newBorderStyle = this.columnStyle.getAttributeValue(CellStyleAttributes.BORDER_STYLE);
}
}
@Override
protected void initComponents(final Shell shell) {
shell.setLayout(new GridLayout());
shell.setText(Messages.getString("ColumnStyleEditorDialog.shellTitle")); //$NON-NLS-1$
// Closing the window is the same as canceling the form
shell.addShellListener(new ShellAdapter() {
@Override
public void shellClosed(ShellEvent e) {
doFormCancel(shell);
}
});
// Tabs panel
Composite tabPanel = new Composite(shell, SWT.NONE);
tabPanel.setLayout(new GridLayout());
GridData fillGridData = new GridData();
fillGridData.grabExcessHorizontalSpace = true;
fillGridData.horizontalAlignment = GridData.FILL;
tabPanel.setLayoutData(fillGridData);
CTabFolder tabFolder = new CTabFolder(tabPanel, SWT.BORDER);
tabFolder.setLayout(new GridLayout());
tabFolder.setLayoutData(fillGridData);
CTabItem columnTab = new CTabItem(tabFolder, SWT.NONE);
columnTab.setText(Messages.getString("ColumnStyleEditorDialog.column")); //$NON-NLS-1$
columnTab.setImage(GUIHelper.getImage("column")); //$NON-NLS-1$
columnTab.setControl(createColumnPanel(tabFolder));
try {
this.cellStyleEditorPanel.edit(this.columnStyle);
this.borderStyleEditorPanel.edit(this.columnStyle.getAttributeValue(CellStyleAttributes.BORDER_STYLE));
} catch (Exception e) {
log.error("Error on style editing", e); //$NON-NLS-1$
}
}
/*
* Grid level styling private Composite createBlotterPanel(Composite parent)
* { Composite blotterPanel = new Composite(parent, SWT.NONE); GridLayout
* panelLayout = new GridLayout(); blotterPanel.setLayout(panelLayout);
*
* GridData panelLayoutData = new GridData();
* panelLayoutData.grabExcessHorizontalSpace = true;
* panelLayoutData.grabExcessVerticalSpace = true;
* panelLayoutData.verticalAlignment = GridData.VERTICAL_ALIGN_BEGINNING;
* panelLayoutData.horizontalAlignment =
* GridData.HORIZONTAL_ALIGN_BEGINNING; panelLayoutData.horizontalIndent =
* 20; blotterPanel.setLayoutData(panelLayoutData);
*
* new SeparatorPanel(blotterPanel, "Styling"); gridColorsEditorPanel = new
* GridColorsEditorPanel(blotterPanel, gridStyle);
*
* return blotterPanel; }
*/
private Composite createColumnPanel(Composite parent) {
Composite columnPanel = new Composite(parent, SWT.NONE);
columnPanel.setLayout(new GridLayout());
new SeparatorPanel(columnPanel, Messages.getString("ColumnStyleEditorDialog.styling")); //$NON-NLS-1$
this.cellStyleEditorPanel = new CellStyleEditorPanel(columnPanel, SWT.NONE);
new SeparatorPanel(columnPanel, Messages.getString("ColumnStyleEditorDialog.border")); //$NON-NLS-1$
this.borderStyleEditorPanel = new BorderStyleEditorPanel(columnPanel, SWT.NONE);
return columnPanel;
}
@Override
protected void doFormOK(Shell shell) {
this.newColumnCellStyle = this.cellStyleEditorPanel.getNewValue();
this.newBorderStyle = this.borderStyleEditorPanel.getNewValue();
shell.dispose();
}
@Override
protected void doFormClear(Shell shell) {
this.newColumnCellStyle = null;
shell.dispose();
}
// Getters for the modified style
public Style getNewColumnCellStyle() {
return this.newColumnCellStyle;
}
public BorderStyle getNewColumnBorderStyle() {
return this.newBorderStyle;
}
}