/*
* ARX: Powerful Data Anonymization
* Copyright 2012 - 2017 Fabian Prasser, Florian Kohlmayer and contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.deidentifier.arx.gui.view.impl.common;
import org.deidentifier.arx.gui.Controller;
import org.deidentifier.arx.gui.view.SWTUtil;
import org.deidentifier.arx.gui.view.def.IComponent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabFolder2Adapter;
import org.eclipse.swt.custom.CTabFolderEvent;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
/**
* This class implements a titled border.
*
* @author Fabian Prasser
*/
public class ComponentTitledBorder implements IComponent{
/** TODO */
private final CTabFolder folder;
/** TODO */
private final CTabItem tab;
/**
* Creates a new instance.
*
* @param parent
* @param controller
* @param title
* @param id
*/
public ComponentTitledBorder(Composite parent, Controller controller, String title, String id){
folder = new CTabFolder(parent, SWT.TOP | SWT.BORDER | SWT.FLAT);
folder.setUnselectedCloseVisible(false);
folder.setSimple(false);
// Create help button
if (controller != null) SWTUtil.createHelpButton(controller, folder, id);
// Prevent closing
folder.addCTabFolder2Listener(new CTabFolder2Adapter() {
@Override
public void close(final CTabFolderEvent event) {
event.doit = false;
}
});
// Create general tab
tab = new CTabItem(folder, SWT.NULL);
tab.setText(title);
tab.setShowClose(false);
folder.setSelection(tab);
}
/**
* Creates a new instance.
*
* @param parent
* @param title
*/
public ComponentTitledBorder(Composite parent, String title){
this(parent, null, title, null);
}
/**
* Returns the underlying control.
*
* @return
*/
public Composite getControl(){
return folder;
}
/**
* Returns the tab
* @return
*/
public CTabItem getTab() {
return this.tab;
}
/**
* Sets the child control.
*
* @param child
*/
public void setChild(Control child){
this.tab.setControl(child);
}
/**
* Sets layout data.
*
* @param data
*/
public void setLayoutData(Object data){
folder.setLayoutData(data);
}
}