/** * <p>Copyright: Copyright 2010</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.ui.grid; import java.util.ArrayList; import java.util.List; import org.eclipse.nebula.widgets.grid.Grid; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.forms.widgets.FormToolkit; import com.hundsun.ares.studio.ui.editor.ARESEditorPlugin; import com.hundsun.ares.studio.ui.grid.renderer.EmptyColumnHeaderRenderer; import com.hundsun.ares.studio.ui.grid.renderer.EmptyRowHeaderRenderer; import com.hundsun.ares.studio.ui.grid.renderer.RowHeaderRenderer; import com.hundsun.ares.studio.ui.grid.renderer.TopLeftRenderer; import com.hundsun.ares.studio.ui.util.HSColorManager; /** * grid��ʽ���� * @author maxh * * @param <T> */ public abstract class GridViewerStyleControl<T> extends EditorComponent<List<T>> { /** ��ɫ��Դͳһ���� */ protected HSColorManager colorManager = ARESEditorPlugin.getDefault().getColorManager(); /** * �Ƿ���ʾ����ͷ */ protected boolean showRowHeader = true; /** * ��ʾ���ָ��� */ protected boolean showLine = true; /** * �Ƿ�˫���޸� */ protected boolean doubleCheckChange = false; /** * �Ƿ�ʹ���Զ������� */ protected boolean useAutoGrow = true; /** * �и� */ protected int rowHeight = 16; /** * ��ͷ����ɫ */ protected Color rowHeaderColor = colorManager.getColor(new RGB(236, 233, 216)); /** * ��ͷ����ɫ */ protected Color columnTopColor = colorManager.getColor(new RGB(236, 233, 216)); /** * ��ͷ�ָ��ߵ���ɫ */ protected Color columnTopLineColor = colorManager.getColor(new RGB(113, 111, 100)); /** * TODO * ��ͷ��� */ protected int itemHeaderWidth = 40; /** * �Ƿ�ȫѡ�� */ protected boolean isFullSelection = false; /** * �Ƿ�Ϊֻ����ֻ�����ɼ��У�ճ�����Զ����������޸ĵ�Ԫ�� */ protected boolean readOnly = false; /** * ��ť */ protected List<Button> buttons = null; /** * �������д�÷����������ķ�� */ protected void adjustStyle(){ } /** * ����һ��Button���� * * @param toolkit * @param client * @param caption * @return */ final protected Button createButton(FormToolkit toolkit, Composite client, String caption) { Button button = null; if (toolkit == null) { button = new Button(client, SWT.PUSH); button.setText(caption); } else { button = toolkit.createButton(client, caption, SWT.PUSH); } GridData gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING); gd.horizontalAlignment = SWT.FILL; button.setLayoutData(gd); return button; } protected List<Button> createButtons(FormToolkit toolkit, Composite client) { List<Button> buttons = new ArrayList<Button>(); return buttons; } public Color getColumnTopColor() { return columnTopColor; } public Color getColumnTopLineColor() { return columnTopLineColor; } public int getItemHeaderWidth() { return itemHeaderWidth; } public Color getRowHeaderColor() { return rowHeaderColor; } public int getRowHeight() { return rowHeight; } protected int getStyle(){ int style = 0; if (isFullSelection) style = SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.BORDER; else style = SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.BORDER; return style; } public boolean isDoubleCheckChange() { return doubleCheckChange; } public boolean isFullSelection() { return isFullSelection; } public boolean isReadOnly() { return readOnly; } public boolean isShowRowHeader() { return showRowHeader; } public boolean isUseAutoGrow() { return useAutoGrow; } public void setColumnTopColor(Color columnTopColor) { this.columnTopColor = columnTopColor; } public void setColumnTopLineColor(Color columnTopLineColor) { this.columnTopLineColor = columnTopLineColor; } public void setDoubleCheckChange(boolean doubleCheckChange) { this.doubleCheckChange = doubleCheckChange; } public void setEditable(boolean editable) { readOnly = !editable; if(buttons == null){ return; } for (Button btn : buttons) { btn.setEnabled(editable); } } public void setEditable(String buttonText, boolean editable) { for (Button btn : buttons) { if (btn.getText().equals(buttonText)) { btn.setEnabled(editable); break; } } } public void setFullSelection(boolean isFullSelection) { this.isFullSelection = isFullSelection; } public void setItemHeaderWidth(int itemHeaderWidth) { this.itemHeaderWidth = itemHeaderWidth; } public void setReadOnly(boolean readOnly) { this.readOnly = readOnly; } public void setRowHeaderColor(Color rowHeaderColor) { this.rowHeaderColor = rowHeaderColor; } public void setRowHeight(int rowHeight) { this.rowHeight = rowHeight; } public void setShowRowHeader(boolean showRowHeader) { this.showRowHeader = showRowHeader; } public void setUseAutoGrow(boolean useAutoGrow) { this.useAutoGrow = useAutoGrow; } public boolean isShowLine() { return showLine; } public void setShowLine(boolean showLine) { this.showLine = showLine; } public TopLeftRenderer createTopLeftRenderer(){ TopLeftRenderer topLeftRenderer = new TopLeftRenderer(); topLeftRenderer.setColor(getColumnTopColor()); topLeftRenderer.setLineColor(getColumnTopLineColor()); return topLeftRenderer; } public RowHeaderRenderer createRowHeaderRenderer(){ RowHeaderRenderer rowHeaderRenderer = new RowHeaderRenderer(); rowHeaderRenderer.setColor(getRowHeaderColor()); rowHeaderRenderer.setLineColor(getColumnTopLineColor()); return rowHeaderRenderer; } public EmptyRowHeaderRenderer createEmptyRowHeaderRenderer(){ EmptyRowHeaderRenderer emptyRowHeaderRenderer = new EmptyRowHeaderRenderer(); emptyRowHeaderRenderer.setColor(getRowHeaderColor()); emptyRowHeaderRenderer.setLineColor(getColumnTopLineColor()); return emptyRowHeaderRenderer; } public EmptyColumnHeaderRenderer createEmptyColumnHeaderRenderer(){ EmptyColumnHeaderRenderer emptyColumnHeaderRenderer = new EmptyColumnHeaderRenderer(); emptyColumnHeaderRenderer.setColor(getColumnTopColor()); emptyColumnHeaderRenderer.setLineColor(getColumnTopLineColor()); return emptyColumnHeaderRenderer; } public Grid createGrid(Composite parent, int style){ GridEx grid = new GridEx(parent,style); grid.setHeaderVisible(true); grid.setLinesVisible(isShowLine()); grid.setRowHeaderVisible(isShowRowHeader()); grid.setItemHeight(getRowHeight()); grid.setItemHeaderWidth(getItemHeaderWidth()); grid.setTopLeftRenderer(createTopLeftRenderer()); grid.setRowHeaderRenderer(createRowHeaderRenderer()); grid.setEmptyRowHeaderRenderer(createEmptyRowHeaderRenderer()); grid.setEmptyColumnHeaderRenderer(createEmptyColumnHeaderRenderer()); return grid; } // /** // * �����˴����������ʾ����ɫ // * <br>�Ż�ԭ�е� ��ʾ��Ϣ����ɫ����һһ��Ӧ�ı׶� // * @author tangjb // */ // public static class ErrorMessage{ // String message = ""; // Color color; // /** ��ʾ�Ƿ� ��������ɫ(ֵΪ��ʱ, ǰ��ɫ���޷���ʾ��)*/ // public ErrorMessage(){} // // public ErrorMessage(Color color , String message) { // this.message = message; // this.color = color; // } // // /** // * @return the color // */ // public Color getColor() { // return color; // } // /** // * @return the message // */ // public String getMessage() { // return message; // } // /** // * @param color the color to set // */ // public void setColor(Color color) { // this.color = color; // } // /** // * @param message the message to set // */ // public void setMessage(String message) { // this.message = message; // } // } }