public void update() { boolean enabled = false; ISourceReference ref = getSourceReference(); if (ref != null) { ISourceRange range; try { range = ref.getSourceRange(); enabled = range != null && range.getLength() > 0; } catch (ModelException e) { // enabled= false; } } setEnabled(enabled); }
/* * non java doc * * @see StructureSelectionAction#internalGetNewSelectionRange(ISourceRange, * ICompilationUnit, SelectionAnalyzer) */ public ISourceRange internalGetNewSelectionRange( ISourceRange oldSourceRange, ISourceReference sr, SelectionAnalyzer selAnalyzer) throws ModelException { if (oldSourceRange.getLength() == 0 && selAnalyzer.getLastCoveringNode() != null) { ASTNode previousNode = NextNodeAnalyzer.perform(oldSourceRange.getOffset(), selAnalyzer.getLastCoveringNode()); if (previousNode != null) return getSelectedNodeSourceRange(sr, previousNode); } org.eclipse.php.internal.core.ast.nodes.ASTNode first = selAnalyzer.getFirstSelectedNode(); if (first == null) return getLastCoveringNodeRange(oldSourceRange, sr, selAnalyzer); org.eclipse.php.internal.core.ast.nodes.ASTNode parent = first.getParent(); if (parent == null) return getLastCoveringNodeRange(oldSourceRange, sr, selAnalyzer); org.eclipse.php.internal.core.ast.nodes.ASTNode lastSelectedNode = selAnalyzer.getSelectedNodes()[selAnalyzer.getSelectedNodes().length - 1]; org.eclipse.php.internal.core.ast.nodes.ASTNode nextNode = getNextNode(parent, lastSelectedNode); if (nextNode == parent) return getSelectedNodeSourceRange(sr, first.getParent()); int offset = oldSourceRange.getOffset(); int end = Math.min(sr.getSourceRange().getLength(), nextNode.getEnd() - 1); return createSourceRange(offset, end); }