You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2013/07/17 20:21:25 UTC

svn commit: r1504217 - in /cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler: editor/AbstractCallbackMethodsTab.java editor/CallbackDescriptorTableModel.java editor/ObjEntityCallbackMethodsTab.java util/CayenneTable.java

Author: aadamchik
Date: Wed Jul 17 18:21:25 2013
New Revision: 1504217

URL: http://svn.apache.org/r1504217
Log:
CAY-1846  Reworking of callback mapping

patch by Ilya Vasiuk

Modified:
    cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java
    cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackDescriptorTableModel.java
    cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityCallbackMethodsTab.java
    cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTable.java

Modified: cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java?rev=1504217&r1=1504216&r2=1504217&view=diff
==============================================================================
--- cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java (original)
+++ cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java Wed Jul 17 18:21:25 2013
@@ -19,32 +19,45 @@
 package org.apache.cayenne.modeler.editor;
 
 import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Insets;
 import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.StringSelection;
 import java.awt.datatransfer.Transferable;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.image.ComponentColorModel;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
+import javax.swing.AbstractButton;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
 import javax.swing.JComboBox;
 import javax.swing.JComponent;
 import javax.swing.JLabel;
+import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JPopupMenu;
+import javax.swing.JScrollPane;
 import javax.swing.JTable;
 import javax.swing.JToolBar;
+import javax.swing.ListSelectionModel;
 import javax.swing.TransferHandler;
+import javax.swing.event.ChangeEvent;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
-import javax.swing.table.DefaultTableCellRenderer;
-
+import javax.swing.event.TableColumnModelEvent;
+import javax.swing.event.TableColumnModelListener;
+import javax.swing.table.JTableHeader;
 import org.apache.cayenne.map.CallbackDescriptor;
 import org.apache.cayenne.map.CallbackMap;
 import org.apache.cayenne.map.LifecycleEvent;
-import org.apache.cayenne.map.ObjRelationship;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.action.AbstractRemoveCallbackMethodAction;
@@ -56,11 +69,13 @@ import org.apache.cayenne.modeler.event.
 import org.apache.cayenne.modeler.pref.TableColumnPreferences;
 import org.apache.cayenne.modeler.util.CayenneAction;
 import org.apache.cayenne.modeler.util.CayenneTable;
-import org.apache.cayenne.modeler.util.PanelFactory;
+import org.apache.cayenne.modeler.util.ModelerUtil;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.builder.PanelBuilder;
+import com.jgoodies.forms.layout.CellConstraints;
 import com.jgoodies.forms.layout.FormLayout;
 
 /**
@@ -81,11 +96,11 @@ public abstract class AbstractCallbackMe
      * toolbar for actions
      */
     protected JToolBar toolBar;
-
+    
     /**
-     * table for displaying callback method names
+     * panel for displaying callback method tables
      */
-    protected CayenneTable table;
+    protected JPanel auxPanel;
 
     /**
      * preferences for the callback methods table
@@ -95,10 +110,7 @@ public abstract class AbstractCallbackMe
     /**
      * Dropdown for callback type selection. Contains fixed list of 7 callback types.
      */
-    protected JComboBox callbackTypeCombo = Application
-            .getWidgetFactory()
-            .createComboBox(
-                    new Object[] {
+    protected CallbackType[] callbackTypes = {
                             new CallbackType(LifecycleEvent.POST_ADD, "post-add"),
                             new CallbackType(LifecycleEvent.PRE_PERSIST, "pre-persist"),
                             new CallbackType(LifecycleEvent.POST_PERSIST, "post-persist"),
@@ -107,8 +119,7 @@ public abstract class AbstractCallbackMe
                             new CallbackType(LifecycleEvent.PRE_REMOVE, "pre-remove"),
                             new CallbackType(LifecycleEvent.POST_REMOVE, "post-remove"),
                             new CallbackType(LifecycleEvent.POST_LOAD, "post-load"),
-                    },
-                    false);
+                    };
 
     /**
      * constructor
@@ -127,17 +138,6 @@ public abstract class AbstractCallbackMe
     protected abstract CallbackMap getCallbackMap();
 
     /**
-     * creates filter pane for filtering callback methods list adds callback method type
-     * dropdown
-     * 
-     * @param builder forms builder
-     */
-    protected void buildFilter(DefaultFormBuilder builder) {
-        JLabel callbacktypeLabel = new JLabel("Callback type:");
-        builder.append(callbacktypeLabel, callbackTypeCombo);
-    }
-
-    /**
      * @return create callback method action
      */
     protected CayenneAction getCreateCallbackMethodAction() {
@@ -160,34 +160,103 @@ public abstract class AbstractCallbackMe
         this.setLayout(new BorderLayout());
 
         toolBar = new JToolBar();
-        toolBar.add(getCreateCallbackMethodAction().buildButton());
         toolBar.add(getRemoveCallbackMethodAction().buildButton());
+
         add(toolBar, BorderLayout.NORTH);
 
-        JPanel auxPanel = new JPanel();
+        auxPanel = new JPanel();
         auxPanel.setOpaque(false);
         auxPanel.setLayout(new BorderLayout());
 
-        FormLayout formLayout = new FormLayout("right:70dlu, 3dlu, fill:150dlu");
+        initTablePreferences();
+
+        add(new JScrollPane(auxPanel), BorderLayout.CENTER);
+    }
+
+    /**
+     * Inits the {@link TableColumnPreferences} object according to callback table name.
+     */
+    protected abstract void initTablePreferences();
+
+    /**
+     * listeners initialization
+     */
+    protected void initController() {
+        mediator.addCallbackMethodListener(new CallbackMethodListener() {
+
+            public void callbackMethodChanged(CallbackMethodEvent e) {
+                rebuildTables();
+            }
+
+            public void callbackMethodAdded(CallbackMethodEvent e) {
+                rebuildTables();
+            }
+
+            public void callbackMethodRemoved(CallbackMethodEvent e) {
+                rebuildTables();
+            }
+        });
+    }
+
+    /**
+     * rebuilds table content
+     */
+    protected void rebuildTables() {
+    	FormLayout formLayout = new FormLayout("left:" + auxPanel.getWidth() + "px");
         DefaultFormBuilder builder = new DefaultFormBuilder(formLayout);
-        buildFilter(builder);
-        auxPanel.add(builder.getPanel(), BorderLayout.NORTH);
 
-        table = new CayenneTable();
-        table.setDefaultRenderer(String.class, new StringRenderer());
+    	auxPanel.removeAll();
+
+    	CallbackMap callbackMap = getCallbackMap();
+        
+        if (callbackMap != null) {
+        	for(CallbackType callbackType : callbackTypes) {
+        		builder.append(CreateTable(callbackType));
+            }
+        }
+
+        auxPanel.add(builder.getPanel(), BorderLayout.CENTER);
+        validate();
+    }
+
+    private JPanel CreateTable(final CallbackType callbackType)
+    {
+   	
+    	final CayenneTable cayenneTable = new CayenneTable();
 
         // drag-and-drop initialization
-        table.setDragEnabled(true);
+    	cayenneTable.setDragEnabled(true);
+    	
+        List<String> methods = new ArrayList<String>();
+        CallbackDescriptor descriptor = null;
+        CallbackMap callbackMap = getCallbackMap();
 
-        table.setTransferHandler(new TransferHandler() {
+        descriptor = callbackMap.getCallbackDescriptor(callbackType.getType());
+        for (String callbackMethod : descriptor.getCallbackMethods()) {
+            methods.add(callbackMethod);
+        }
+
+        final CallbackDescriptorTableModel model = new CallbackDescriptorTableModel(
+                mediator,
+                this,
+                methods,
+                descriptor);
+
+        cayenneTable.setModel(model);
+        cayenneTable.setRowHeight(25);
+        cayenneTable.setRowMargin(3);
+        cayenneTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+        cayenneTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+        
+        cayenneTable.setTransferHandler(new TransferHandler() {
 
             @Override
             protected Transferable createTransferable(JComponent c) {
-                int rowIndex = table.getSelectedRow();
+                int rowIndex = cayenneTable.getSelectedRow();
 
                 String result = null;
-                if (rowIndex >= 0 && rowIndex < table.getModel().getRowCount()) {
-                    result = String.valueOf(table.getModel().getValueAt(
+                if (rowIndex >= 0 && rowIndex < cayenneTable.getModel().getRowCount()) {
+                    result = String.valueOf(cayenneTable.getModel().getValueAt(
                             rowIndex,
                             CallbackDescriptorTableModel.METHOD_NAME));
                 }
@@ -213,17 +282,13 @@ public abstract class AbstractCallbackMe
                         return false;
                     }
 
-                    int rowIndex = table.getSelectedRow();
+                    int rowIndex = cayenneTable.getSelectedRow();
 
-                    // move callback method inside of model
-                    CallbackDescriptor callbackDescriptor = getCallbackMap()
-                            .getCallbackDescriptor(
-                                    ((CallbackType) callbackTypeCombo.getSelectedItem())
-                                            .getType());
+                    CallbackDescriptor callbackDescriptor = ((CallbackDescriptorTableModel)cayenneTable.getCayenneModel()).getCallbackDescriptor();
                     mediator.setDirty(callbackDescriptor.moveMethod(
                             callbackMethod,
                             rowIndex));
-                    rebuildTable();
+                    rebuildTables();
                     return true;
                 }
 
@@ -240,90 +305,34 @@ public abstract class AbstractCallbackMe
                 return false;
             }
         });
-
-        initTablePreferences();
-
-        // Create and install a popup
-        JPopupMenu popup = new JPopupMenu();
-        popup.add(getRemoveCallbackMethodAction().buildMenu());
-
-        TablePopupHandler.install(table, popup);
-
-        auxPanel.add(PanelFactory.createTablePanel(table, null), BorderLayout.CENTER);
-
-        add(auxPanel, BorderLayout.CENTER);
-    }
-
-    /**
-     * Inits the {@link TableColumnPreferences} object according to callback table name.
-     */
-    protected abstract void initTablePreferences();
-
-    /**
-     * listeners initialization
-     */
-    protected void initController() {
-        mediator.addCallbackMethodListener(new CallbackMethodListener() {
-
-            public void callbackMethodChanged(CallbackMethodEvent e) {
-                if (isVisible()) {
-                    rebuildTable();
-                }
-            }
-
-            public void callbackMethodAdded(CallbackMethodEvent e) {
-                if (isVisible()) {
-                    updateCallbackTypeCounters();
-                    rebuildTable();
-
-                    if (table.editCellAt(
-                            table.getRowCount() - 1,
-                            CallbackDescriptorTableModel.METHOD_NAME)
-                            && table.getEditorComponent() != null) {
-                        table.getEditorComponent().requestFocus();
-                    }
-                }
-            }
-
-            public void callbackMethodRemoved(CallbackMethodEvent e) {
-                if (isVisible()) {
-                    updateCallbackTypeCounters();
-                    rebuildTable();
-                }
-            }
-        });
-
-        callbackTypeCombo.addItemListener(new ItemListener() {
-
-            public void itemStateChanged(ItemEvent e) {
-                if (e.getStateChange() == ItemEvent.SELECTED) {
-                    mediator.setCurrentCallbackType((CallbackType) callbackTypeCombo
-                            .getSelectedItem());
-                    updateCallbackTypeCounters();
-                    rebuildTable();
-                }
-            }
-        });
-
-        table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
+        
+        cayenneTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
 
             public void valueChanged(ListSelectionEvent e) {
                 if (!e.getValueIsAdjusting()) {
                     String[] methods = new String[0];
 
-                    if (table.getSelectedRow() != -1) {
-                        int[] sel = table.getSelectedRows();
+                    if (cayenneTable.getSelectedRow() != -1) {
+                        int[] sel = cayenneTable.getSelectedRows();
                         methods = new String[sel.length];
 
                         for (int i = 0; i < sel.length; i++) {
-                            methods[i] = (String) table
+                            methods[i] = (String) cayenneTable
                                     .getValueAt(
                                             sel[i],
-                                            table
+                                            cayenneTable
                                                     .convertColumnIndexToView(CallbackDescriptorTableModel.METHOD_NAME));
                         }
                     }
 
+                    LifecycleEvent currentType = ((CallbackDescriptorTableModel)cayenneTable.getCayenneModel()).getCallbackDescriptor().getCallbackType();
+                    for(CallbackType callbackType : callbackTypes) {
+                    	if(callbackType.getType() == currentType) {
+                    		mediator.setCurrentCallbackType(callbackType);
+                    		break;
+                    	}
+                    }
+
                     mediator.setCurrentCallbackMethods(methods);
                     getRemoveCallbackMethodAction().setEnabled(methods.length > 0);
                     getRemoveCallbackMethodAction().setName(
@@ -332,108 +341,103 @@ public abstract class AbstractCallbackMe
                 }
             }
         });
-    }
+        
+        cayenneTable.getColumnModel().addColumnModelListener(new TableColumnModelListener() {
+			
+        	public void columnMarginChanged(ChangeEvent e) {
+        		if(!cayenneTable.getColumnWidthChanged()) {
+	        		if(cayenneTable.getTableHeader().getResizingColumn() != null) {
+		        		tablePreferences.bind(cayenneTable, null, null, null);
+	      				cayenneTable.setColumnWidthChanged(true);
+	                }
+        		}
+            }
+
+			public void columnSelectionChanged(ListSelectionEvent e) {
+				
+			}
+			
+			public void columnRemoved(TableColumnModelEvent e) {
+				
+			}
+			
+			public void columnMoved(TableColumnModelEvent e) {
+				
+			}
+		
+			public void columnAdded(TableColumnModelEvent e) {
+				
+			}
+		});
+
+        cayenneTable.getTableHeader().addMouseListener(new MouseAdapter()
+		{
+		    public void mouseReleased(MouseEvent e)
+		    {
+		        if(cayenneTable.getColumnWidthChanged())
+		        {
+		        	if(cayenneTable.getWidth() <= 60)
+		        		cayenneTable.setSize(50, cayenneTable.getHeight());
+		        	rebuildTables();
+		        	cayenneTable.setColumnWidthChanged(false);
+		        }
+		    }
+		});
+        
+        tablePreferences.bind(cayenneTable, null, null, null);
 
-    protected void updateCallbackTypeCounters() {
-        CallbackMap map = getCallbackMap();
-
-        for (int i = 0; i < callbackTypeCombo.getItemCount(); i++) {
-            CallbackType type = (CallbackType) callbackTypeCombo.getItemAt(i);
+        // Create and install a popup
+        JPopupMenu popup = new JPopupMenu();
+        popup.add(getRemoveCallbackMethodAction().buildMenu());
 
-            if (map == null) {
-                type.setCounter(0);
-            }
-            else {
-                CallbackDescriptor callbackDescriptor = map.getCallbackDescriptor(type
-                        .getType());
-                type.setCounter(callbackDescriptor.getCallbackMethods().size());
-            }
-        }
-        callbackTypeCombo.repaint();
+        TablePopupHandler.install(cayenneTable, popup);
+        
+        JPanel panel = new JPanel();
+        panel.setLayout(new BorderLayout());
+        
+        addButtonAtHeader(cayenneTable, getCreateCallbackMethodAction().buildButton(), new ButtonListener(callbackType), ModelerUtil.buildIcon("icon-create-method.gif"));
+       
+        panel.add(cayenneTable.getTableHeader(), BorderLayout.NORTH);
+        panel.add(cayenneTable, BorderLayout.CENTER);
+        
+        return panel;
     }
-
-    /**
-     * rebuilds table content
-     */
-    protected void rebuildTable() {
-        CallbackType callbackType = (CallbackType) callbackTypeCombo.getSelectedItem();
-        List methods = new ArrayList();
-        CallbackDescriptor descriptor = null;
-        CallbackMap callbackMap = getCallbackMap();
-
-        if (callbackMap != null && callbackType != null) {
-            descriptor = callbackMap.getCallbackDescriptor(callbackType.getType());
-            for (String callbackMethod : descriptor.getCallbackMethods()) {
-                methods.add(callbackMethod);
-            }
-        }
-
-        final CallbackDescriptorTableModel model = new CallbackDescriptorTableModel(
-                mediator,
-                this,
-                methods,
-                descriptor);
-
-        table.setModel(model);
-        table.setRowHeight(25);
-        table.setRowMargin(3);
-
-        mediator.setCurrentCallbackMethods(new String[0]);
-
-        tablePreferences.bind(table, null, null, null);
+    
+    private void addButtonAtHeader(JTable table, JButton button, ActionListener buttonListener, ImageIcon buttonIcon){
+        PanelBuilder builder = new PanelBuilder(new FormLayout("left:10dlu, 2dlu", "center:10dlu"));
+        CellConstraints cc = new CellConstraints();
+        
+        button.setIcon(ModelerUtil.buildIcon("icon-create-method.gif"));
+        button.setOpaque(false);
+        button.setBorderPainted(false);
+        button.setContentAreaFilled(false);
+        button.addActionListener(buttonListener);
+        
+        builder.add(button, cc.xy(1, 1));
+        
+        JPanel buttonPanel = builder.getPanel();
+        buttonPanel.setOpaque(false);
+       
+        JTableHeader header = table.getTableHeader();
+        //header.setMinimumSize(new Dimension(50, header.getHeight()));
+        header.setLayout(new BorderLayout());
+        header.add(buttonPanel, BorderLayout.EAST);
     }
 
-    /**
-     * class for renderig string values
-     */
-    class StringRenderer extends DefaultTableCellRenderer {
-
-        @Override
-        public Component getTableCellRendererComponent(
-                JTable table,
-                Object value,
-                boolean isSelected,
-                boolean hasFocus,
-                int row,
-                int column) {
-
-            // center cardinality column
-            int align = column == ObjRelationshipTableModel.REL_SEMANTICS
-                    ? JLabel.CENTER
-                    : JLabel.LEFT;
-            super.setHorizontalAlignment(align);
-
-            super.getTableCellRendererComponent(
-                    table,
-                    value,
-                    isSelected,
-                    hasFocus,
-                    row,
-                    column);
-
-            ObjRelationshipTableModel model = (ObjRelationshipTableModel) table
-                    .getModel();
-            ObjRelationship relationship = model.getRelationship(row);
-
-            if (relationship != null
-                    && relationship.getSourceEntity() != model.getEntity()) {
-                setForeground(Color.GRAY);
-            }
-            else {
-                setForeground(isSelected && !hasFocus
-                        ? table.getSelectionForeground()
-                        : table.getForeground());
-            }
-
-            return this;
+    class ButtonListener implements ActionListener  
+    {  
+    	private CallbackType callbackType;
+    	
+    	public ButtonListener(CallbackType callbackType){
+    		this.callbackType = callbackType;
+    	}
+    	
+        public void actionPerformed(ActionEvent e) {
+        	mediator.setCurrentCallbackType(callbackType);
         }
-    }
+    } 
 
     protected final CallbackType getSelectedCallbackType() {
-        CallbackType selectedType = (CallbackType) callbackTypeCombo.getSelectedItem();
-        if (selectedType == null) {
-            selectedType = (CallbackType) callbackTypeCombo.getItemAt(0);
-        }
-        return selectedType;
-    }
+    	return mediator.getCurrentCallbackType();
+    }    
 }

Modified: cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackDescriptorTableModel.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackDescriptorTableModel.java?rev=1504217&r1=1504216&r2=1504217&view=diff
==============================================================================
--- cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackDescriptorTableModel.java (original)
+++ cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackDescriptorTableModel.java Wed Jul 17 18:21:25 2013
@@ -34,9 +34,8 @@ import org.apache.cayenne.modeler.util.C
  */
 public class CallbackDescriptorTableModel extends CayenneTableModel {
 
-    private static final int COLUMN_COUNT = 2;
-    public static final int METHOD_NUMBER = 0;
-    public static final int METHOD_NAME = 1;
+    private static final int COLUMN_COUNT = 1;
+    public static final int METHOD_NAME = 0;
     protected ObjEntity entity;
     protected CallbackDescriptor callbackDescriptor;
 
@@ -100,14 +99,7 @@ public class CallbackDescriptorTableMode
      * @return the value Object at the specified cell
      */
     public Object getValueAt(int rowIndex, int columnIndex) {
-        switch (columnIndex) {
-            case METHOD_NUMBER:
-                return rowIndex + 1;
-            case METHOD_NAME:
-                return getCallbackMethod(rowIndex);
-        }
-
-        return null;
+    	return getCallbackMethod(rowIndex);
     }
 
     /**
@@ -122,14 +114,7 @@ public class CallbackDescriptorTableMode
      * @return column name
      */
     public String getColumnName(int column) {
-        switch (column) {
-            case METHOD_NUMBER:
-                return "No.";
-            case METHOD_NAME:
-                return "Method";
-        }
-
-        return null;
+        return callbackDescriptor.getCallbackType().name();
     }
 
     /**
@@ -140,12 +125,6 @@ public class CallbackDescriptorTableMode
      * @return true
      */
     public boolean isCellEditable(int rowIndex, int columnIndex) {
-        switch (columnIndex) {
-            case METHOD_NAME:
-                return true;
-            case METHOD_NUMBER:
-                return false;
-        }
         return true;
     }
 

Modified: cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityCallbackMethodsTab.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityCallbackMethodsTab.java?rev=1504217&r1=1504216&r2=1504217&view=diff
==============================================================================
--- cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityCallbackMethodsTab.java (original)
+++ cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityCallbackMethodsTab.java Wed Jul 17 18:21:25 2013
@@ -48,13 +48,11 @@ public class ObjEntityCallbackMethodsTab
      */
     protected void initController() {
         super.initController();
-        //mediator.addObjEntityDisplayListener(this);
+
         addComponentListener(
                 new ComponentAdapter() {
                     public void componentShown(ComponentEvent e) {
-                        mediator.setCurrentCallbackType((CallbackType)callbackTypeCombo.getSelectedItem());
-                        updateCallbackTypeCounters();
-                        rebuildTable();
+                        rebuildTables();
                     }
                 }
         );
@@ -63,9 +61,7 @@ public class ObjEntityCallbackMethodsTab
                 new ObjEntityDisplayListener() {
                     public void currentObjEntityChanged(EntityDisplayEvent e) {
                         if (ObjEntityCallbackMethodsTab.this.isVisible()) {
-                            mediator.setCurrentCallbackType((CallbackType)callbackTypeCombo.getSelectedItem());
-                            updateCallbackTypeCounters();
-                            rebuildTable();
+                            rebuildTables();
                         }
                     }
                 }

Modified: cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTable.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTable.java?rev=1504217&r1=1504216&r2=1504217&view=diff
==============================================================================
--- cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTable.java (original)
+++ cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTable.java Wed Jul 17 18:21:25 2013
@@ -46,6 +46,7 @@ public class CayenneTable extends JTable
 
     private SortButtonRenderer renderer = new SortButtonRenderer();
     protected TableHeaderSortingListener tableHeaderListener;
+    private boolean isColumnWidthChanged;
 
     public CayenneTable() {
         super();
@@ -244,4 +245,12 @@ public class CayenneTable extends JTable
     public void setSortPreferenceSaver(TableColumnPreferences tableColumnPreferences) {
         tableHeaderListener.setPreferences(tableColumnPreferences);
     }
+    
+    public boolean getColumnWidthChanged() {
+        return isColumnWidthChanged;
+    }
+
+    public void setColumnWidthChanged(boolean widthChanged) {
+        isColumnWidthChanged = widthChanged;
+    }
 }