Project

General

Profile

« Previous | Next » 

Revision d52bc40e

Added by Patrick Plitzner about 5 years ago

ref #7912 Add flag to allow selection of top level nodes

  • default is false
  • currently only allowed in area vocabulary selection in distribution editor preferences

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableAreaVocabulariesPage.java
51 51
        super.createControl(parent);
52 52

  
53 53
        treeComposite.getViewer().setContentProvider(new RootElementsOnlyTreeContentProvider());
54
        treeComposite.setAllowTopLevelSelection(true);
54 55
    }
55 56

  
56 57

  
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/CheckBoxTreeComposite.java
48 48
    private Button btnSelectAllChildren;
49 49
    private Button btnSelectDirectChildren;
50 50

  
51
    private boolean allowTopLevelSelection = false;
52

  
51 53
    public CheckBoxTreeComposite(Composite parent, ITreeContentProvider contentProvider, IBaseLabelProvider labelProvider, int style) {
52 54
        super(parent, style);
53 55
        GridLayout layout = new GridLayout();
......
92 94
        tree.addListener(SWT.Selection, event -> {
93 95
            if (event.detail == SWT.CHECK) {
94 96
                TreeItem item = (TreeItem) event.item;
97
                if(!allowTopLevelSelection && item.getParentItem()==null){
98
                    // top level selection not allowed
99
                    item.setChecked(false);
100
                    return;
101
                }
95 102
                updateItem(item);
96 103
            }
97 104
        });
......
154 161
        return viewer;
155 162
    }
156 163

  
164
    public void setAllowTopLevelSelection(boolean allowTopLevelSelection) {
165
        this.allowTopLevelSelection = allowTopLevelSelection;
166
    }
167

  
157 168
    /**
158 169
     * Checks the tree items corresponding to the given elements.<br>
159 170
     * @param elements
......
194 205
        }
195 206
        else if(e.widget == btnSelectAllChildren){
196 207
            Widget item = viewer.testFindItem(firstElement);
197
            boolean checked = false;
198
            Object[] checkedElements = viewer.getCheckedElements();
199
            for (Object checkedElement : checkedElements) {
200
                if(checkedElement.equals(firstElement)){
201
                    checked = true;
202
                    break;
203
                }
204
            }
205 208
            if(item instanceof TreeItem){
206 209
                viewer.expandToLevel(firstElement, AbstractTreeViewer.ALL_LEVELS);
207
                viewer.setSubtreeChecked(firstElement, !checked);
210
                viewer.setSubtreeChecked(firstElement, !((TreeItem) item).getFont().equals(FONT_BOLD));
208 211
                TreeItem parent = getRoot((TreeItem) item);
209 212
                updateItem(parent);
213
                ((TreeItem) item).setChecked(false);
210 214
            }
211 215
        }
212 216
    }

Also available in: Unified diff