Changeset 1816 in josm


Ignore:
Timestamp:
Jul 20, 2009 6:57:56 AM (4 years ago)
Author:
Gubaer
Message:

fixed #2998: Variable collum-with in relations editor

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java

    r1814 r1816  
    1616import java.awt.event.FocusEvent; 
    1717import java.awt.event.KeyEvent; 
     18import java.awt.event.MouseAdapter; 
     19import java.awt.event.MouseEvent; 
     20import java.awt.event.WindowAdapter; 
     21import java.awt.event.WindowEvent; 
    1822import java.io.IOException; 
    1923import java.util.ArrayList; 
     
    298302        memberTable = new MemberTable(memberTableModel); 
    299303 
    300         ListSelectionModel lsm = memberTable.getSelectionModel(); 
    301         lsm.addListSelectionListener(new ListSelectionListener() { 
    302             public void valueChanged(ListSelectionEvent e) { 
    303                 ArrayList<OsmPrimitive> sel; 
    304                 int cnt = memberTable.getSelectedRowCount(); 
    305                 if(cnt > 0) { 
    306                     sel = new ArrayList<OsmPrimitive>(cnt); 
    307                     for (int i : memberTable.getSelectedRows()) { 
    308                         sel.add(memberTableModel.getReferredPrimitive(i)); 
    309                     } 
    310                 } else { 
    311                     cnt = memberTable.getRowCount(); 
    312                     sel = new ArrayList<OsmPrimitive>(cnt); 
    313                     for (int i = 0; i < cnt; ++i) { 
    314                         sel.add(memberTableModel.getReferredPrimitive(i)); 
    315                     } 
    316                 } 
    317                 getLayer().data.setSelected(sel); 
    318             } 
    319         }); 
     304        memberTable.getSelectionModel().addListSelectionListener(new SelectionSynchronizer()); 
     305        memberTable.addMouseListener(new MemberTableDblClickAdapter()); 
    320306 
    321307        final JScrollPane scrollPane = new JScrollPane(memberTable); 
     
    334320        ); 
    335321 
    336  
    337322        GridBagConstraints gc = new GridBagConstraints(); 
    338323        gc.gridx = 0; 
     
    364349        pnl.add(scrollPane, gc); 
    365350 
    366         gc.gridx = 2; 
     351        JPanel pnl2 = new JPanel(); 
     352        pnl2.setLayout(new GridBagLayout()); 
     353 
     354        gc.gridx = 0; 
     355        gc.gridy = 0; 
     356        gc.gridheight  =1; 
     357        gc.gridwidth = 3; 
     358        gc.fill = GridBagConstraints.HORIZONTAL; 
     359        gc.anchor = GridBagConstraints.FIRST_LINE_START; 
     360        gc.weightx = 1.0; 
     361        gc.weighty = 0.0; 
     362        pnl2.add(new JLabel(tr("Selection")), gc); 
     363 
     364        gc.gridx = 0; 
    367365        gc.gridy = 1; 
     366        gc.gridheight  =1; 
     367        gc.gridwidth = 1; 
     368        gc.fill = GridBagConstraints.VERTICAL; 
     369        gc.anchor = GridBagConstraints.NORTHWEST; 
    368370        gc.weightx = 0.0; 
    369371        gc.weighty = 1.0; 
    370         pnl.add(buildSelectionControlButtonPanel(), gc); 
    371  
    372         gc.gridx = 3; 
     372        pnl2.add(buildSelectionControlButtonPanel(), gc); 
     373 
     374        gc.gridx = 1; 
    373375        gc.gridy = 1; 
    374         gc.weightx = 0.4; 
     376        gc.weightx = 1.0; 
    375377        gc.weighty = 1.0; 
    376         pnl.add(buildSelectionTablePanel(), gc); 
    377  
    378         gc.gridx = 1; 
    379         gc.gridy = 2; 
    380         gc.weightx = 1.0; 
    381         gc.weighty = 0.0; 
    382         pnl.add(buildButtonPanel(), gc); 
    383  
    384         return pnl; 
     378        gc.fill = GridBagConstraints.BOTH; 
     379        pnl2.add(buildSelectionTablePanel(), gc); 
     380 
     381        final JSplitPane splitPane = new  JSplitPane(JSplitPane.HORIZONTAL_SPLIT); 
     382        splitPane.setLeftComponent(pnl); 
     383        splitPane.setRightComponent(pnl2); 
     384        splitPane.setOneTouchExpandable(false); 
     385        addWindowListener( 
     386                new WindowAdapter() { 
     387                    @Override 
     388                    public void windowOpened(WindowEvent e) { 
     389                        // has to be called when the window is visible, otherwise 
     390                        // no effect 
     391                        splitPane.setDividerLocation(0.6); 
     392                    } 
     393                } 
     394        ); 
     395 
     396        JPanel pnl3 = new JPanel(); 
     397        pnl3.setLayout(new BorderLayout()); 
     398        pnl3.add(splitPane, BorderLayout.CENTER); 
     399        pnl3.add(buildButtonPanel(), BorderLayout.SOUTH); 
     400        return pnl3; 
    385401    } 
    386402 
     
    407423     */ 
    408424    protected JSplitPane buildSplitPane() { 
    409         JSplitPane pane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); 
     425        final JSplitPane pane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); 
    410426        pane.setTopComponent(buildTagEditorPanel()); 
    411427        pane.setBottomComponent(buildMemberEditorPanel()); 
    412428        pane.setOneTouchExpandable(true); 
    413         pane.setDividerLocation(150); 
     429        addWindowListener( 
     430                new WindowAdapter() { 
     431                    @Override 
     432                    public void windowOpened(WindowEvent e) { 
     433                        // has to be called when the window is visible, otherwise 
     434                        // no effect 
     435                        pane.setDividerLocation(0.3); 
     436                    } 
     437                } 
     438        ); 
    414439        return pane; 
    415440    } 
     
    9981023        } 
    9991024 
    1000         public void actionPerformed(ActionEvent e) { 
     1025        public void run() { 
    10011026            int idx = memberTable.getSelectedRow(); 
    10021027            if (idx < 0) return; 
     
    10091034        } 
    10101035 
     1036        public void actionPerformed(ActionEvent e) { 
     1037            if (!isEnabled()) 
     1038                return; 
     1039            run(); 
     1040        } 
     1041 
    10111042        public void valueChanged(ListSelectionEvent e) { 
    10121043            refreshEnabled(); 
     1044        } 
     1045    } 
     1046 
     1047    class MemberTableDblClickAdapter extends MouseAdapter { 
     1048        @Override 
     1049        public void mouseClicked(MouseEvent e) { 
     1050            if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) { 
     1051                new EditAction().run(); 
     1052            } 
     1053        } 
     1054    } 
     1055 
     1056    class SelectionSynchronizer implements ListSelectionListener { 
     1057        public void valueChanged(ListSelectionEvent e) { 
     1058            ArrayList<OsmPrimitive> sel; 
     1059            int cnt = memberTable.getSelectedRowCount(); 
     1060            if (cnt <=0) return; 
     1061            sel = new ArrayList<OsmPrimitive>(cnt); 
     1062            for (int i : memberTable.getSelectedRows()) { 
     1063                sel.add(memberTableModel.getReferredPrimitive(i)); 
     1064            } 
     1065            getLayer().data.setSelected(sel); 
    10131066        } 
    10141067    } 
Note: See TracChangeset for help on using the changeset viewer.