com.actelion.research.gui.JMultiPanelView Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of openchemlib Show documentation
Show all versions of openchemlib Show documentation
Open Source Chemistry Library
/*
* Copyright 2017 Idorsia Pharmaceuticals Ltd., Hegenheimermattweg 91, CH-4123 Allschwil, Switzerland
*
* This file is part of DataWarrior.
*
* DataWarrior is free software: you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* DataWarrior is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
* You should have received a copy of the GNU General Public License along with DataWarrior.
* If not, see http://www.gnu.org/licenses/.
*
* @author Thomas Sander
*/
package com.actelion.research.gui;
import com.actelion.research.util.DoubleFormat;
import info.clearthought.layout.TableLayout;
import javax.swing.*;
import java.util.ArrayList;
public class JMultiPanelView extends JPanel implements MultiPanelDragListener {
static final long serialVersionUID = 0x20070314;
public static final String VIEW_HEIGHT = "height";
private ArrayList mPanelList;
private TableLayout mLayout;
private int mDragTitle,mDragStart;
private int[] mDragStartPanelHeight;
public JMultiPanelView() {
double[][] size = { { TableLayout.FILL }, {} };
mLayout = new TableLayout(size);
setLayout(mLayout);
setOpaque(false);
mPanelList = new ArrayList();
}
public void add(JComponent c, String title) {
add(c, title, mPanelList.size());
}
public void add(JComponent c, String title, int position) {
double height = suggestHeight();
JMultiPanelTitle titlePanel = new JMultiPanelTitle(this, title);
if (position == 0) {
titlePanel.setDragEnabled(false);
for (int i=0; i 0.0) {
if (properties.length() > 0)
properties.append(';');
properties.append(VIEW_HEIGHT+"["+o.title+"]="+DoubleFormat.toString(mLayout.getRow(2*i+1)));
}
}
return properties.toString();
}
public void setProperties(String properties) {
for (int i=0; i=0; panel--) {
if (-dy <= mDragStartPanelHeight[panel] - 6) {
newPanelHeight[panel] += dy;
heightUsed -= dy;
break;
}
else if (-dy <= mDragStartPanelHeight[panel]) {
newPanelHeight[panel] = 0;
heightUsed += mDragStartPanelHeight[panel];
break;
}
dy += mDragStartPanelHeight[panel];
heightUsed += mDragStartPanelHeight[panel];
newPanelHeight[panel] = 0;
}
newPanelHeight[mDragTitle] += heightUsed;
}
else if (dy > 0) {
int heightUsed = 0;
for (int panel=mDragTitle; panel
* - name equals title
* - if title starts with name followed by ' ('+someString+')'
* @param name
* @return
*/
public boolean titleMatches(String name) {
if (title.equals(name))
return true;
if (!title.startsWith(name))
return false;
int nameLength = name.length();
return (title.length() > nameLength+3 && title.substring(nameLength, nameLength+2).equals(" (") && title.endsWith(")"));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy