/*******************************************************************************
* Copyright (c) 2013 hangum.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* hangum - initial API and implementation
******************************************************************************/
package com.hangum.tadpole.rdb.core.editors.dbinfos;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.EditorPart;
import com.hangum.tadpole.commons.google.analytics.AnalyticCaller;
import com.hangum.tadpole.commons.util.TadpoleWidgetUtils;
import com.hangum.tadpole.engine.define.DBDefine;
import com.hangum.tadpole.engine.define.DBGroupDefine;
import com.hangum.tadpole.engine.query.dao.system.UserDBDAO;
import com.hangum.tadpole.rdb.core.Messages;
import com.hangum.tadpole.rdb.core.editors.dbinfos.composites.ColumnsComposite;
import com.hangum.tadpole.rdb.core.editors.dbinfos.composites.PropertyComposite;
import com.hangum.tadpole.rdb.core.editors.dbinfos.composites.RDBInformationComposite;
import com.hangum.tadpole.rdb.core.editors.dbinfos.composites.TablesComposite;
/**
* RDB DB Information editor
*
* @author hangum
*
*/
public class RDBDBInfosEditor extends EditorPart {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(RDBDBInfosEditor.class);
public static final String ID = "com.hangum.tadpole.rdb.core.editor.rdb.dbinfos"; //$NON-NLS-1$
private CTabFolder tabFolder;
private UserDBDAO userDB;
private RDBInformationComposite compositeRDBInformation;
private TablesComposite tableInformationComposite;
private ColumnsComposite columnInformationComposite;
private PropertyComposite propertyInformationComposite;
public RDBDBInfosEditor() {
}
@Override
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
setSite(site);
setInput(input);
RDBDBInfoEditorInput moInput = (RDBDBInfoEditorInput)input;
this.userDB = moInput.getUserDB();
setPartName(moInput.getName());
}
@Override
public void createPartControl(Composite parent) {
GridLayout gl_parent = new GridLayout(1, false);
gl_parent.marginHeight = 2;
gl_parent.verticalSpacing = 2;
gl_parent.horizontalSpacing = 2;
gl_parent.marginWidth = 2;
parent.setLayout(gl_parent);
GridLayout gl_compositeRDBInformation = new GridLayout(1, false);
gl_compositeRDBInformation.verticalSpacing = 2;
gl_compositeRDBInformation.horizontalSpacing = 2;
gl_compositeRDBInformation.marginHeight = 2;
gl_compositeRDBInformation.marginWidth = 2;
tabFolder = new CTabFolder(parent, SWT.NONE);
tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
tabFolder.setBorderVisible(false);
tabFolder.setSelectionBackground(TadpoleWidgetUtils.getTabFolderBackgroundColor(), TadpoleWidgetUtils.getTabFolderPercents());
tabFolder.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent evt) {
if (userDB == null) return;
CTabItem tabItem = tabFolder.getSelection();
Control control = tabItem.getControl();
if(control instanceof TablesComposite) {
TablesComposite composite = (TablesComposite)control;
composite.initUI(false);
} else if(control instanceof ColumnsComposite) {
ColumnsComposite composite = (ColumnsComposite)control;
composite.initUI(false);
} else if(control instanceof PropertyComposite) {
PropertyComposite composite = (PropertyComposite)control;
composite.initUI(false);
}
}
});
//[information composite start]///////////////////////////////
CTabItem tbtmServerStatus = new CTabItem(tabFolder, SWT.NONE);
tbtmServerStatus.setText(Messages.get().RDBDBInfosEditor_1);
compositeRDBInformation = new RDBInformationComposite(tabFolder, SWT.NONE, userDB);
tbtmServerStatus.setControl(compositeRDBInformation);
compositeRDBInformation.setLayout(gl_compositeRDBInformation);
//[information composite end]/////////////////////////////////
//[table information start]
CTabItem tbtmCollectionSummary = new CTabItem(tabFolder, SWT.NONE);
tbtmCollectionSummary.setText(Messages.get().RDBDBInfosEditor_2);
tableInformationComposite = new TablesComposite(tabFolder, SWT.NONE, userDB);
tbtmCollectionSummary.setControl(tableInformationComposite);
GridLayout gl_compositeTableInformation = new GridLayout(1, false);
gl_compositeTableInformation.verticalSpacing = 2;
gl_compositeTableInformation.horizontalSpacing = 2;
gl_compositeTableInformation.marginHeight = 2;
gl_compositeTableInformation.marginWidth = 2;
tableInformationComposite.setLayout(gl_compositeTableInformation);
//[table information end]
/* Column information */
CTabItem tbtmColumnSummary = new CTabItem(tabFolder, SWT.NONE);
tbtmColumnSummary.setText(Messages.get().RDBDBInfosEditor_3);
columnInformationComposite = new ColumnsComposite(tabFolder, SWT.NONE, userDB);
tbtmColumnSummary.setControl(columnInformationComposite);
GridLayout gl_compositeColumnInformation = new GridLayout(1, false);
gl_compositeColumnInformation.verticalSpacing = 2;
gl_compositeColumnInformation.horizontalSpacing = 2;
gl_compositeColumnInformation.marginHeight = 2;
gl_compositeColumnInformation.marginWidth = 2;
columnInformationComposite.setLayout(gl_compositeColumnInformation);
/* Properties */
if(DBGroupDefine.ALTIBASE_GROUP == userDB.getDBGroup()) {
CTabItem tbtmPropertySummary = new CTabItem(tabFolder, SWT.NONE);
tbtmPropertySummary.setText(Messages.get().RDBDBInfosEditor_4);
propertyInformationComposite = new PropertyComposite(tabFolder, SWT.NONE, userDB);
tbtmPropertySummary.setText(Messages.get().RDBDBInfosEditor_4);
propertyInformationComposite = new PropertyComposite(tabFolder, SWT.NONE, userDB);
tbtmPropertySummary.setControl(propertyInformationComposite);
GridLayout gl_compositeProperty = new GridLayout(1, false);
gl_compositeProperty.verticalSpacing = 2;
gl_compositeProperty.horizontalSpacing = 2;
gl_compositeProperty.marginHeight = 2;
gl_compositeProperty.marginWidth = 2;
propertyInformationComposite.setLayout(gl_compositeProperty);
}
tabFolder.setSelection(0);
// google analytic
AnalyticCaller.track(RDBDBInfosEditor.ID, userDB.getDbms_type());
}
@Override
public boolean isDirty() {
return false;
}
@Override
public boolean isSaveAsAllowed() {
return false;
}
@Override
public void doSave(IProgressMonitor monitor) {
}
@Override
public void doSaveAs() {
}
@Override
public void setFocus() {
}
}