diff --git a/client/src/org/compiere/apps/AMenu.java b/client/src/org/compiere/apps/AMenu.java index ead1bef236..54ba96bf16 100644 --- a/client/src/org/compiere/apps/AMenu.java +++ b/client/src/org/compiere/apps/AMenu.java @@ -35,7 +35,6 @@ import org.compiere.grid.tree.*; import org.compiere.model.*; import org.compiere.swing.*; import org.compiere.util.*; - /** * Application Menu Controller * @@ -272,6 +271,7 @@ public final class AMenu extends CFrame m_tabActivities++; m_tabWorkflow++; } + treePanel.setBorder(BorderFactory.createEmptyBorder(2,3,2,3)); centerPane.add(treePanel, Msg.getMsg(m_ctx, "Menu")); centerPane.add(new CScrollPane(wfActivity), Msg.getMsg (m_ctx, "WorkflowActivities") + ": 0"); centerPane.add(new CScrollPane(wfPanel), Msg.getMsg (m_ctx, "WorkflowPanel")); diff --git a/client/src/org/compiere/apps/Preference.java b/client/src/org/compiere/apps/Preference.java index 330815baf0..9dba24fac6 100644 --- a/client/src/org/compiere/apps/Preference.java +++ b/client/src/org/compiere/apps/Preference.java @@ -22,6 +22,7 @@ import java.io.*; import java.util.*; import java.util.logging.*; import javax.swing.*; +import javax.swing.border.Border; import javax.swing.event.*; import javax.swing.table.*; // @@ -126,6 +127,8 @@ public final class Preference extends CDialog private CButton bErrorSave = new CButton(Msg.getMsg(Env.getCtx(), "SaveFile")); private CButton bRoleInfo = new CButton(Msg.translate(Env.getCtx(), "AD_Role_ID")); + private CPanel configPanel = new CPanel(); + /** * Static Init. *
@@ -193,64 +196,96 @@ public final class Preference extends CDialog // tabPane.add(customizePane, Msg.getMsg(Env.getCtx(), "Preference")); tabPane.add(customizePane, Msg.getMsg(Env.getCtx(), "Preference")); customizePane.setLayout(customizeLayout); - customizePane.add(infoArea, new GridBagConstraints(0, 0, 3, 1, 0.0, 0.0 - ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0)); - customizePane.add(uiTheme, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - customizePane.add(bRoleInfo, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0 - ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - - customizePane.add(autoCommit, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - customizePane.add(adempiereSys, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); + customizePane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); - customizePane.add(autoLogin, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - customizePane.add(storePassword, new GridBagConstraints(2, 3, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); + Border insetBorder = BorderFactory.createEmptyBorder(2, 2, 2, 0); + CPanel loginPanel = new CPanel(); + loginPanel.setBorder(BorderFactory.createTitledBorder("Login")); + loginPanel.setLayout(new GridLayout(1, 2)); + autoLogin.setBorder(insetBorder); + storePassword.setBorder(insetBorder); + loginPanel.add(autoLogin); + loginPanel.add(storePassword); + customizePane.add(loginPanel, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0 + ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 2, 0), 0, 0)); - customizePane.add(showAcct, new GridBagConstraints(1, 4, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - customizePane.add(showTrl, new GridBagConstraints(2, 4, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); + CPanel windowPanel = new CPanel(); + windowPanel.setBorder(BorderFactory.createTitledBorder("Window")); + windowPanel.setLayout(new GridLayout(4, 2)); + windowPanel.add(showAcct);showAcct.setBorder(insetBorder); + windowPanel.add(showTrl);showTrl.setBorder(insetBorder); + windowPanel.add(showAdvanced);showAdvanced.setBorder(insetBorder); + windowPanel.add(autoCommit);autoCommit.setBorder(insetBorder); + windowPanel.add(autoNew);autoNew.setBorder(insetBorder); + windowPanel.add(cacheWindow);cacheWindow.setBorder(insetBorder); + windowPanel.add(openWindowMaximized);openWindowMaximized.setBorder(insetBorder); + windowPanel.add(singleInstancePerWindow);singleInstancePerWindow.setBorder(insetBorder); + customizePane.add(windowPanel, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0 + ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 2, 0), 0, 0)); - customizePane.add(showAdvanced, new GridBagConstraints(1, 5, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - customizePane.add(autoNew, new GridBagConstraints(2, 5, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); + CPanel connPanel = new CPanel(); + connPanel.setBorder(BorderFactory.createTitledBorder("Connection")); + connPanel.setLayout(new GridBagLayout()); + connPanel.add(connectionProfileLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0 + ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 2, 2, 0), 0, 0)); + connPanel.add(connectionProfile, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0 + ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 2, 2, 0), 0, 0)); + connPanel.add(validateConnectionOnStartup, new GridBagConstraints(0, 1, 2, 1, 1.0, 0.0 + ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 2, 2, 0), 0, 0)); + customizePane.add(connPanel, new GridBagConstraints(0, 2, 1, 1, 1.0, 0.0 + ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 2, 0), 0, 0)); - customizePane.add(connectionProfileLabel, new GridBagConstraints(0, 6, 1, 1, 0.0, 0.0 - ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - customizePane.add(connectionProfile, new GridBagConstraints(1, 6, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - customizePane.add(cacheWindow, new GridBagConstraints(2, 6, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - - customizePane.add(traceLabel, new GridBagConstraints(0, 7, 1, 1, 0.0, 0.0 - ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 0, 5, 5), 0, 0)); - customizePane.add(traceLevel, new GridBagConstraints(1, 7, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - customizePane.add(traceFile, new GridBagConstraints(2, 7, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); + CPanel tracePanel = new CPanel(); + tracePanel.setBorder(BorderFactory.createTitledBorder("Trace")); + tracePanel.setLayout(new GridBagLayout()); + tracePanel.add(traceLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0 + ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 2, 2, 0), 0, 0)); + tracePanel.add(traceLevel, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0 + ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 2, 2, 0), 0, 0)); + tracePanel.add(traceFile, new GridBagConstraints(0, 1, 2, 1, 1.0, 0.0 + ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 2, 2, 0), 0, 0)); + customizePane.add(tracePanel, new GridBagConstraints(0, 3, 1, 1, 1.0, 0.0 + ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 2, 0), 0, 0)); - customizePane.add(lPrinter, new GridBagConstraints(0, 8, 1, 1, 0.0, 0.0 - ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - customizePane.add(fPrinter, new GridBagConstraints(1, 8, 2, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); + CPanel printPanel = new CPanel(); + printPanel.setBorder(BorderFactory.createTitledBorder("Printing")); + printPanel.setLayout(new GridBagLayout()); + printPanel.add(lPrinter, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0 + ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 2, 2, 0), 0, 0)); + printPanel.add(fPrinter, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0 + ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 2, 2, 0), 0, 0)); + printPanel.add(printPreview, new GridBagConstraints(0, 1, 2, 1, 1.0, 0.0 + ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 2, 2, 0), 0, 0)); + customizePane.add(printPanel, new GridBagConstraints(0, 4, 1, 1, 1.0, 0.0 + ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 2, 0), 0, 0)); + + CPanel otherPanel = new CPanel(); + otherPanel.setBorder(BorderFactory.createEmptyBorder()); + otherPanel.setLayout(new GridLayout()); + CPanel datePanel = new CPanel(); + datePanel.setLayout(new FlowLayout()); + ((FlowLayout)datePanel.getLayout()).setAlignment(FlowLayout.LEFT); + datePanel.add(lDate); + datePanel.add(fDate); + otherPanel.add(datePanel);datePanel.setBorder(insetBorder); + otherPanel.add(adempiereSys);adempiereSys.setBorder(insetBorder); + customizePane.add(otherPanel, new GridBagConstraints(0, 5, 1, 1, 1.0, 0.0 + ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 2, 0), 0, 0)); + + CPanel themePanel = new CPanel(); + themePanel.add(uiTheme); + //TODO + tabPane.add(themePanel, uiTheme.getText()); + + configPanel.setLayout(new BorderLayout()); + configPanel.add(infoArea, BorderLayout.CENTER); + CPanel configSouth = new CPanel(); + configSouth.setLayout(new FlowLayout()); + ((FlowLayout)configSouth.getLayout()).setAlignment(FlowLayout.RIGHT); + configSouth.add(bRoleInfo); + configPanel.add(configSouth, BorderLayout.SOUTH); + tabPane.add(configPanel, "Info"); - customizePane.add(lDate, new GridBagConstraints(0, 9, 1, 1, 0.0, 0.0 - ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - customizePane.add(fDate, new GridBagConstraints(1, 9, 2, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - customizePane.add(printPreview, new GridBagConstraints(2, 9, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - customizePane.add(validateConnectionOnStartup, new GridBagConstraints(1, 10, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - customizePane.add(singleInstancePerWindow, new GridBagConstraints(2, 10, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); - customizePane.add(openWindowMaximized, new GridBagConstraints(1, 11, 1, 1, 0.0, 0.0 - ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); // Info // tabPane.add(contextPane, Msg.getMsg(Env.getCtx(), "Context")); tabPane.add(contextPane, Msg.getMsg(Env.getCtx(), "Context")); @@ -519,9 +554,9 @@ public final class Preference extends CDialog errorTable.setModel(model); // if (bErrorsOnly.isSelected()) - tabPane.setTitleAt(2, Msg.getMsg(Env.getCtx(), "Errors") + " (" + data.size() + ")"); + tabPane.setTitleAt(4, Msg.getMsg(Env.getCtx(), "Errors") + " (" + data.size() + ")"); else - tabPane.setTitleAt(2, Msg.getMsg(Env.getCtx(), "TraceInfo") + " (" + data.size() + ")"); + tabPane.setTitleAt(4, Msg.getMsg(Env.getCtx(), "TraceInfo") + " (" + data.size() + ")"); errorTable.autoSize(); } // cmd_errorsOnly diff --git a/client/src/org/compiere/grid/tree/VTreePanel.java b/client/src/org/compiere/grid/tree/VTreePanel.java index a1db42a11f..d400a9e2b7 100644 --- a/client/src/org/compiere/grid/tree/VTreePanel.java +++ b/client/src/org/compiere/grid/tree/VTreePanel.java @@ -16,14 +16,19 @@ *****************************************************************************/ package org.compiere.grid.tree; + import java.awt.*; import java.awt.datatransfer.*; import java.awt.dnd.*; import java.awt.event.*; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.sql.*; import java.util.*; import java.util.logging.*; import javax.swing.*; +import javax.swing.plaf.SplitPaneUI; +import javax.swing.plaf.basic.BasicSplitPaneUI; import javax.swing.tree.*; import org.compiere.apps.*; import org.compiere.model.*; @@ -49,6 +54,8 @@ import org.compiere.util.*; public final class VTreePanel extends CPanel implements ActionListener, DragGestureListener, DragSourceListener, DropTargetListener { + protected boolean m_lookAndFeelChanged = false; + /** * Tree Panel for browsing and editing of a tree. * Need to call initTree @@ -73,8 +80,16 @@ public final class VTreePanel extends CPanel centerSplitPane.setDividerSize(0); popMenuTree.remove(mBarAdd); } - else + else { centerSplitPane.setDividerLocation(80); + UIManager.addPropertyChangeListener(new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent evt) { + if ("lookAndFeel".equals(evt.getPropertyName())) + m_lookAndFeelChanged = true; + } + + }); + } // base settings if (editable) tree.setDropTarget(dropTarget); @@ -108,7 +123,7 @@ public final class VTreePanel extends CPanel // Shortcut Bar if (m_hasBar) { - bar.removeAll(); // remove all existing buttons + toolbar.removeAll(); // remove all existing buttons Enumeration en = m_root.preorderEnumeration(); while (en.hasMoreElements()) { @@ -137,6 +152,7 @@ public final class VTreePanel extends CPanel private CMenuItem mFrom = new CMenuItem(); private CMenuItem mTo = new CMenuItem(); private CPanel bar = new CPanel(); + private JToolBar toolbar = new JToolBar(JToolBar.VERTICAL); private CMenuItem mBarAdd = new CMenuItem(); private CMenuItem mBarRemove = new CMenuItem(); private BorderLayout southLayout = new BorderLayout(); @@ -192,6 +208,8 @@ public final class VTreePanel extends CPanel tree.addKeyListener(keyListener); tree.setCellRenderer(new VTreeCellRenderer()); treePane.getViewport().add(tree, null); + treePane.setBorder(new ShadowBorder()); + tree.setBorder(BorderFactory.createEmptyBorder()); // treePane.setPreferredSize(new Dimension(50,200)); // tree.setPreferredSize(new Dimension(100,150)); // @@ -214,6 +232,9 @@ public final class VTreePanel extends CPanel // centerSplitPane.add(treePane, JSplitPane.RIGHT); centerSplitPane.add(bar, JSplitPane.LEFT); + centerSplitPane.setBorder(BorderFactory.createEmptyBorder()); + removeSplitPaneBorder(); + this.add(centerSplitPane, BorderLayout.CENTER); // mFrom.setText(Msg.getMsg(Env.getCtx(), "ItemMove")); @@ -224,8 +245,15 @@ public final class VTreePanel extends CPanel mTo.setActionCommand("To"); mTo.addActionListener(this); // - bar.setLayout(new BoxLayout(bar, BoxLayout.Y_AXIS)); bar.setMinimumSize(new Dimension (50,50)); + bar.setBorder(new ShadowBorder()); + bar.setLayout(new FlowLayout()); + ((FlowLayout)bar.getLayout()).setAlignment(FlowLayout.LEFT); + bar.add(toolbar); + toolbar.setLayout(new GridBagLayout()); + toolbar.setFloatable(false); + toolbar.setRollover(true); + toolbar.setBorder(BorderFactory.createEmptyBorder()); mBarAdd.setText(Msg.getMsg(Env.getCtx(), "BarAdd")); mBarAdd.setActionCommand("BarAdd"); @@ -244,6 +272,16 @@ public final class VTreePanel extends CPanel } // jbInit + private void removeSplitPaneBorder() { + if (centerSplitPane != null) { + SplitPaneUI splitPaneUI = centerSplitPane.getUI(); + if (splitPaneUI instanceof BasicSplitPaneUI) { + BasicSplitPaneUI basicUI = (BasicSplitPaneUI) splitPaneUI; + basicUI.getDivider().setBorder(BorderFactory.createEmptyBorder()); + } + } + } + /** * Set Divider Location * @param location location (80 default) @@ -832,21 +870,25 @@ public final class VTreePanel extends CPanel // if (space != -1) // label = label.substring(0, space); - CButton button = new CButton(label); // Create the button + CButton button = new CButton(label); + button.setHorizontalAlignment(JButton.LEFT); button.setToolTipText(nd.getDescription()); button.setActionCommand(String.valueOf(nd.getNode_ID())); // button.setMargin(new Insets(0, 0, 0, 0)); button.setIcon(nd.getIcon()); - button.setBorderPainted(false); - // button.setFocusPainted(false); + //button.setBorderPainted(false); button.setRequestFocusEnabled(false); // button.addActionListener(this); button.addMouseListener(mouseListener); // - bar.add(button); + toolbar.add(button, + new GridBagConstraints(0, GridBagConstraints.RELATIVE, + 1, 1, 1.0, 0.0, GridBagConstraints.NORTHWEST, + GridBagConstraints.HORIZONTAL, new Insets(1,0,1,0), 4,2)); bar.validate(); + if (centerSplitPane.getDividerLocation() == -1) centerSplitPane.setDividerLocation(button.getPreferredSize().width); bar.repaint(); @@ -857,7 +899,7 @@ public final class VTreePanel extends CPanel */ private void barRemove() { - bar.remove(m_buttonSelected); + toolbar.remove(m_buttonSelected); bar.validate(); bar.repaint(); barDBupdate(false, Integer.parseInt(m_buttonSelected.getActionCommand())); @@ -910,6 +952,15 @@ public final class VTreePanel extends CPanel } } // expandTree + @Override + public void paint(Graphics g) { + if (m_lookAndFeelChanged) { + m_lookAndFeelChanged = false; + if (m_hasBar) removeSplitPaneBorder(); + } + super.paint(g); + } + } // VTreePanel