use of com.biglybt.ui.swt.mdi.TabbedMdiMaximizeListener in project BiglyBT by BiglySoftware.
the class TableViewSWT_TabsCommon method createSashForm.
public Composite createSashForm(final Composite composite) {
if (!tv.isTabViewsEnabled()) {
tableComposite = tv.createMainPanel(composite);
return tableComposite;
}
SelectedContentManager.addCurrentlySelectedContentListener(this);
ConfigurationManager configMan = ConfigurationManager.getInstance();
int iNumViews = 0;
UIFunctionsSWT uiFunctions = UIFunctionsManagerSWT.getUIFunctionsSWT();
if (uiFunctions != null) {
UISWTInstance pluginUI = uiFunctions.getUISWTInstance();
if (pluginUI != null) {
iNumViews += pluginUI.getViewListeners(tv.getTableID()).length;
}
}
if (iNumViews == 0) {
tableComposite = tv.createMainPanel(composite);
return tableComposite;
}
final String props_prefix = tv.getTableID() + "." + tv.getPropertiesPrefix();
FormData formData;
final Composite form = new Composite(composite, SWT.NONE);
FormLayout flayout = new FormLayout();
flayout.marginHeight = 0;
flayout.marginWidth = 0;
form.setLayout(flayout);
GridData gridData;
gridData = new GridData(GridData.FILL_BOTH);
form.setLayoutData(gridData);
// Create them in reverse order, so we can have the table auto-grow, and
// set the tabFolder's height manually
cTabsHolder = new Composite(form, SWT.NONE);
tabbedMDI = uiFunctions.createTabbedMDI(cTabsHolder, props_prefix);
tabbedMDI.setMaximizeVisible(true);
tabbedMDI.setMinimizeVisible(true);
tabbedMDI.setTabbedMdiMaximizeListener(new TabbedMdiMaximizeListener() {
@Override
public void maximizePressed() {
TableView tvToUse = tvOverride == null ? tv : tvOverride;
Object[] ds = tvToUse.getSelectedDataSources(true);
if (ds.length == 1 && ds[0] instanceof DownloadManager) {
UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
if (uiFunctions != null) {
uiFunctions.getMDI().showEntryByID(MultipleDocumentInterface.SIDEBAR_SECTION_TORRENT_DETAILS, ds);
}
}
}
});
final int SASH_WIDTH = 5;
sash = Utils.createSash(form, SASH_WIDTH);
tableComposite = tv.createMainPanel(form);
Composite cFixLayout = tableComposite;
while (cFixLayout != null && cFixLayout.getParent() != form) {
cFixLayout = cFixLayout.getParent();
}
if (cFixLayout == null) {
cFixLayout = tableComposite;
}
GridLayout layout = new GridLayout();
layout.numColumns = 1;
layout.horizontalSpacing = 0;
layout.verticalSpacing = 0;
layout.marginHeight = 0;
layout.marginWidth = 0;
cFixLayout.setLayout(layout);
// FormData for Folder
formData = new FormData();
formData.left = new FormAttachment(0, 0);
formData.right = new FormAttachment(100, 0);
formData.bottom = new FormAttachment(100, 0);
int iSplitAt = configMan.getIntParameter(props_prefix + ".SplitAt", 3000);
// Was stored at whole
if (iSplitAt < 100) {
iSplitAt *= 100;
}
// pct is % bottom
double pct = iSplitAt / 10000.0;
if (pct < 0.03) {
pct = 0.03;
} else if (pct > 0.97) {
pct = 0.97;
}
// height will be set on first resize call
sash.setData("PCT", new Double(pct));
cTabsHolder.setLayout(new FormLayout());
fdHeightChanger = formData;
cTabsHolder.setLayoutData(formData);
// FormData for Sash
formData = new FormData();
formData.left = new FormAttachment(0, 0);
formData.right = new FormAttachment(100, 0);
formData.bottom = new FormAttachment(cTabsHolder);
formData.height = SASH_WIDTH;
sash.setLayoutData(formData);
// FormData for table Composite
formData = new FormData();
formData.left = new FormAttachment(0, 0);
formData.right = new FormAttachment(100, 0);
formData.top = new FormAttachment(0, 0);
formData.bottom = new FormAttachment(sash);
cFixLayout.setLayoutData(formData);
// Listeners to size the folder
sash.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
final boolean FASTDRAG = true;
if (FASTDRAG && e.detail == SWT.DRAG) {
return;
}
Rectangle area = form.getClientArea();
int height = area.height - e.y - e.height;
if (!Constants.isWindows) {
height -= SASH_WIDTH;
}
if (area.height - height < 100) {
height = area.height - 100;
}
if (height < 0) {
height = 0;
}
fdHeightChanger.height = height;
Double l = new Double((double) height / area.height);
sash.setData("PCT", l);
if (e.detail != SWT.DRAG) {
ConfigurationManager configMan = ConfigurationManager.getInstance();
configMan.setParameter(props_prefix + ".SplitAt", (int) (l.doubleValue() * 10000));
}
form.layout();
// sometimes sash cheese is left
cTabsHolder.redraw();
}
});
buildFolder(form, props_prefix);
return form;
}
Aggregations