/**
* <p>Copyright: Copyright (c) 2009</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.internal.ui;
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.InstanceScope;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.osgi.service.prefs.BackingStoreException;
import org.osgi.service.prefs.Preferences;
import com.hundsun.ares.studio.core.ARESCore;
import com.hundsun.ares.studio.core.preferences.ErrorCheckPreferenceConstant;
import com.hundsun.ares.studio.core.preferences.ErrorCheckPreferenceHelper;
/**
* ��������ѡ��Page
* @author liaogc
*/
public class ErrorCheckPreferencePage extends PreferencePage implements IWorkbenchPreferencePage{
private Button btCheck;
private Button btMetadataCheck;
private Button btBasicdataCheck;
private Button btDatabaseCheck;
private Button btServiceCheck;
private Button btAtomCheck;
private Button btLogicCheck;
private Button btObjectCheck;
private Button btProcedureCheck;
private Button btRelationeCheck;
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
*/
@Override
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent,parent.getStyle());
Label lbError = new Label(composite,SWT.NONE);
lbError.setText("������");
btCheck = new Button(composite,SWT.CHECK);
btCheck.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
setButtonEnabled(btMetadataCheck,btCheck.getSelection());
setButtonEnabled(btBasicdataCheck,btCheck.getSelection());
setButtonEnabled(btDatabaseCheck,btCheck.getSelection());
setButtonEnabled(btServiceCheck,btCheck.getSelection());
setButtonEnabled(btAtomCheck,btCheck.getSelection());
setButtonEnabled(btLogicCheck,btCheck.getSelection());
setButtonEnabled(btObjectCheck,btCheck.getSelection());
setButtonEnabled(btProcedureCheck,btCheck.getSelection());
setButtonEnabled(btRelationeCheck,btCheck.getSelection());
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
}
});
Label lbRelationeCheck = new Label(composite,SWT.NONE);
lbRelationeCheck.setText("��������Դ");
btRelationeCheck = new Button(composite,SWT.CHECK);
Label lbErrorSp = new Label(composite,SWT.SEPARATOR|SWT.HORIZONTAL);
//Ԫ���ݴ�����
Label lbMetadataCheck = new Label(composite,SWT.NONE);
lbMetadataCheck.setText("Ԫ����");
btMetadataCheck = new Button(composite,SWT.CHECK);
if(isCanVisible("com.hundsun.ares.studio.jres.basicdata.core")){
Label lbBasicdataCheck = new Label(composite,SWT.NONE);
lbBasicdataCheck.setText("��������");
btBasicdataCheck = new Button(composite,SWT.CHECK);
}
if(isCanVisible("com.hundsun.ares.studio.jres.database.core")){
Label lbDatadataCheck = new Label(composite,SWT.NONE);
lbDatadataCheck.setText("���ݿ�");
btDatabaseCheck = new Button(composite,SWT.CHECK);
}
if(isCanVisible("com.hundsun.ares.studio.jres.service.core")){
Label lbServiceeCheck = new Label(composite,SWT.NONE);
lbServiceeCheck.setText("����ӿ�");
btServiceCheck = new Button(composite,SWT.CHECK);
}
if(isCanVisible("com.hundsun.ares.studio.atom.core")){
Label lbAtomCheck = new Label(composite,SWT.NONE);
lbAtomCheck.setText("ԭ��");
btAtomCheck = new Button(composite,SWT.CHECK);
}
if(isCanVisible("com.hundsun.ares.studio.logic.core")){
Label lbLogicCheck = new Label(composite,SWT.NONE);
lbLogicCheck.setText("��");
btLogicCheck = new Button(composite,SWT.CHECK);
}
if(isCanVisible("com.hundsun.ares.studio.procedure.core")){
Label lbProcedureCheck = new Label(composite,SWT.NONE);
lbProcedureCheck.setText("����");
btProcedureCheck = new Button(composite,SWT.CHECK);
}
if(isCanVisible("com.hundsun.ares.studio.biz.core")){
Label lbObjectCheck = new Label(composite,SWT.NONE);
lbObjectCheck.setText("����");
btObjectCheck = new Button(composite,SWT.CHECK);
}
GridDataFactory.fillDefaults().span(2, 1).grab(true, false).applyTo(lbErrorSp);
GridLayoutFactory.fillDefaults().numColumns(2).applyTo(composite);
initValue();
return composite;
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#performApply()
*/
@Override
protected void performApply() {
IEclipsePreferences preferences = new InstanceScope().getNode(ARESCore.PLUGIN_ID);
if(preferences!=null){
setPreferences(preferences,ErrorCheckPreferenceConstant.ERROR_CHECK,btCheck);
setPreferences(preferences,ErrorCheckPreferenceConstant.METADATA_CHECK,btMetadataCheck);
setPreferences(preferences,ErrorCheckPreferenceConstant.BASIC_DATA_CHECK,btBasicdataCheck);
setPreferences(preferences,ErrorCheckPreferenceConstant.DATABASE_CHECK,btDatabaseCheck);
setPreferences(preferences,ErrorCheckPreferenceConstant.SERVICE_CHECK,btServiceCheck);
setPreferences(preferences,ErrorCheckPreferenceConstant.ATOM_CHECK,btAtomCheck);
setPreferences(preferences,ErrorCheckPreferenceConstant.LOGIC_CHECK,btLogicCheck);
setPreferences(preferences,ErrorCheckPreferenceConstant.OBJECT_CHECK,btObjectCheck);
setPreferences(preferences,ErrorCheckPreferenceConstant.PROCEDURE_CHECK,btProcedureCheck);
setPreferences(preferences,ErrorCheckPreferenceConstant.RELATION_CHECK,btRelationeCheck);
}
try {
preferences.flush();
} catch (BackingStoreException e) {
e.printStackTrace();
}
ErrorCheckPreferenceHelper.getInstance().refresh();
super.performApply();
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#performCancel()
*/
@Override
public boolean performCancel() {
return super.performCancel();
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#performDefaults()
*/
@Override
protected void performDefaults() {
setButtonSelected(btCheck,true);
setButtonSelected(btMetadataCheck,true);
setButtonSelected(btBasicdataCheck,true);
setButtonSelected(btDatabaseCheck,true);
setButtonSelected(btServiceCheck,true);
setButtonSelected(btAtomCheck,true);
setButtonSelected(btLogicCheck,true);
setButtonSelected(btObjectCheck,true);
setButtonSelected(btProcedureCheck,true);
setButtonSelected(btRelationeCheck,true);
}
/**
* ��ʼ����ֵ
*/
private void initValue(){
IPreferencesService service = Platform.getPreferencesService();
Preferences root = service.getRootNode();
Preferences corenstanceNode = root.node(InstanceScope.SCOPE).node("com.hundsun.ares.studio.core");
if(corenstanceNode!=null){
setButtonSelected(btCheck,corenstanceNode.getBoolean(ErrorCheckPreferenceConstant.ERROR_CHECK, ErrorCheckPreferenceConstant.ERROR_CHECK_DEFVALUE));
setButtonSelected(btMetadataCheck,corenstanceNode.getBoolean(ErrorCheckPreferenceConstant.BASIC_DATA_CHECK, ErrorCheckPreferenceConstant.BASICDATA_CHECK_DEFVALUE));
setButtonSelected(btBasicdataCheck,corenstanceNode.getBoolean(ErrorCheckPreferenceConstant.RELATION_CHECK, ErrorCheckPreferenceConstant.RELATION_CHECK_DEFVALUE));
setButtonSelected(btDatabaseCheck,corenstanceNode.getBoolean(ErrorCheckPreferenceConstant.DATABASE_CHECK, ErrorCheckPreferenceConstant.DATABASE_CHECK_DEFVALUE));
setButtonSelected(btServiceCheck,corenstanceNode.getBoolean(ErrorCheckPreferenceConstant.SERVICE_CHECK, ErrorCheckPreferenceConstant.SERVICE_CHECK_DEFVALUE));
setButtonSelected(btAtomCheck,corenstanceNode.getBoolean(ErrorCheckPreferenceConstant.ATOM_CHECK, ErrorCheckPreferenceConstant.ATOM_CHECK_DEFVALUE));
setButtonSelected(btLogicCheck,corenstanceNode.getBoolean(ErrorCheckPreferenceConstant.LOGIC_CHECK, ErrorCheckPreferenceConstant.LOGIC_CHECK_DEFVALUE));
setButtonSelected(btObjectCheck,corenstanceNode.getBoolean(ErrorCheckPreferenceConstant.PROCEDURE_CHECK, ErrorCheckPreferenceConstant.PROCEDURE_CHECK_DEFVALUE));
setButtonSelected(btProcedureCheck,corenstanceNode.getBoolean(ErrorCheckPreferenceConstant.PROCEDURE_CHECK, ErrorCheckPreferenceConstant.PROCEDURE_CHECK_DEFVALUE));
setButtonSelected(btRelationeCheck,corenstanceNode.getBoolean(ErrorCheckPreferenceConstant.RELATION_CHECK, ErrorCheckPreferenceConstant.RELATION_CHECK_DEFVALUE));
if(!btCheck.getSelection()){
setButtonEnabled(btMetadataCheck,false);
setButtonEnabled(btBasicdataCheck,false);
setButtonEnabled(btDatabaseCheck,false);
setButtonEnabled(btServiceCheck,false);
setButtonEnabled(btAtomCheck,false);
setButtonEnabled(btLogicCheck,false);
setButtonEnabled(btObjectCheck,false);
setButtonEnabled(btProcedureCheck,false);
setButtonEnabled(btRelationeCheck,false);
}
}
}
/**
* �����Ƿ�ɼ�
* @param bundleId
* @return
*/
private boolean isCanVisible(String bundleId){
return Platform.getBundle(bundleId)!=null;
}
/**
* ������ѡ�����ֵ
* @param preferences
* @param name
* @param bt
*/
private void setPreferences(IEclipsePreferences preferences,String name,Button bt){
if(bt!=null){
preferences.put(name, bt.getSelection()?"true":"false");
}
}
/**
* ����button��ѡ��״̬
* @param bt
* @param selected
*/
private void setButtonSelected(Button bt,boolean selected){
if(bt!=null){
bt.setSelection(selected);
}
}
/**
* ����button��enabled����ֵ
* @param bt
* @param enabled
*/
private void setButtonEnabled(Button bt,boolean enabled){
if(bt!=null){
bt.setEnabled(enabled);
}
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
@Override
public void init(IWorkbench workbench) {
//setDescription("������");
}
}