Package org.eclipse.wst.sse.core.internal.provisional

Examples of org.eclipse.wst.sse.core.internal.provisional.IStructuredModel


     * @return
     */
    private SelectionChangedEvent updateEvent(SelectionChangedEvent event) {
      ISelection selection = event.getSelection();
      if (selection instanceof ITextSelection && !(selection instanceof IStructuredSelection)) {
        IStructuredModel structuredModel = null;
        StructuredTextEditor localEditor = getStructuredTextEditor();
        if (localEditor != null) {
          structuredModel = localEditor.getInternalModel();
          if (structuredModel != null) {
            int start = ((ITextSelection) selection).getOffset();
View Full Code Here


  SourceViewer doCreateViewer(Composite parent, SourceViewerConfiguration viewerConfiguration) {
    SourceViewer viewer = null;
    String contentTypeID = ContentTypeIdForJSP.ContentTypeID_JSP;
    viewer = new StructuredTextViewer(parent, null, null, false, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
    viewer.getTextWidget().setFont(JFaceResources.getFont("org.eclipse.wst.sse.ui.textfont")); //$NON-NLS-1$
    IStructuredModel scratchModel = StructuredModelManager.getModelManager().createUnManagedStructuredModelFor(contentTypeID);
    IDocument document = scratchModel.getStructuredDocument();
    viewer.configure(viewerConfiguration);
    viewer.setDocument(document);
    return viewer;
  }
View Full Code Here

  /**
   * @return {@link IndexedRegion} that this validator was installed on
   */
  private void calculateInstalledIndexedRegion() {
    if (fRegion == null) {
      IStructuredModel model = null;
      try {
        model = StructuredModelManager.getModelManager().getModelForRead(fDocument);
        if (model != null) {
          fRegion = model.getIndexedRegion(fDocumentPosition);
        }
      }
      finally {
        if (model != null)
          model.releaseFromRead();
      }
    }
  }
View Full Code Here

   *   org.eclipse.jface.text.ITextSelection)
   */
  protected void processAction(ITextEditor textEditor,
      final IStructuredDocument document, ITextSelection textSelection) {
   
    IStructuredModel model = null;
    DocumentRewriteSession session = null;
    boolean changed = false;
   
    try {
      // get text selection lines info
      int selectionStartLine = textSelection.getStartLine();
      int selectionEndLine = textSelection.getEndLine();
     
      int selectionEndLineOffset = document.getLineOffset(selectionEndLine);
      int selectionEndOffset = textSelection.getOffset() + textSelection.getLength();

      // adjust selection end line
      if ((selectionEndLine > selectionStartLine) && (selectionEndLineOffset == selectionEndOffset)) {
        selectionEndLine--;
      }

      // save the selection position since it will be changing
      Position selectionPosition = null;
      selectionPosition = new Position(textSelection.getOffset(), textSelection.getLength());
      document.addPosition(selectionPosition);

     
      model = StructuredModelManager.getModelManager().getModelForEdit(document);
      if (model != null) {
        //makes it so one undo will undo all the edits to the document
        model.beginRecording(this, SSEUIMessages.ToggleComment_label, SSEUIMessages.ToggleComment_description);
       
        //keeps listeners from doing anything until updates are all done
        model.aboutToChangeModel();
        if(document instanceof IDocumentExtension4) {
          session = ((IDocumentExtension4)document).startRewriteSession(DocumentRewriteSessionType.UNRESTRICTED);
        }
        changed = true;
       
        //get the display for the editor if we can
        Display display = null;
        if(textEditor instanceof StructuredTextEditor) {
          StructuredTextViewer viewer = ((StructuredTextEditor)textEditor).getTextViewer();
          if(viewer != null) {
            display = viewer.getControl().getDisplay();
          }
        }
       
        //create the toggling operation
        IRunnableWithProgress toggleCommentsRunnable = new ToggleLinesRunnable(
            model.getContentTypeIdentifier(), document, selectionStartLine, selectionEndLine, display);
       
        //if toggling lots of lines then use progress monitor else just run the operation
        if((selectionEndLine - selectionStartLine) > TOGGLE_LINES_MAX_NO_BUSY_INDICATOR && display != null) {
          ProgressMonitorDialog dialog = new ProgressMonitorDialog(display.getActiveShell());
          dialog.run(false, true, toggleCommentsRunnable);
        } else {
          toggleCommentsRunnable.run(new NullProgressMonitor());
        }
      }
    } catch (InvocationTargetException e) {
      Logger.logException("Problem running toggle comment progess dialog.", e)//$NON-NLS-1$
    } catch (InterruptedException e) {
      Logger.logException("Problem running toggle comment progess dialog.", e)//$NON-NLS-1$
    } catch (BadLocationException e) {
      Logger.logException("The given selection " + textSelection + " must be invalid", e); //$NON-NLS-1$ //$NON-NLS-2$
    } finally {
      //clean everything up
      if(session != null && document instanceof IDocumentExtension4) {
        ((IDocumentExtension4)document).stopRewriteSession(session);
      }
     
      if(model != null) {
        model.endRecording(this);
        if(changed) {
          model.changedModel();
        }
        model.releaseFromEdit();
      }
    }
  }
View Full Code Here

        return baseConfiguration.getLineStyleProviders(sourceViewer, partitionType);
      }
    };
    SourceViewer viewer = new StructuredTextViewer(parent, null, null, false, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
    viewer.getTextWidget().setFont(JFaceResources.getFont("org.eclipse.wst.sse.ui.textfont")); //$NON-NLS-1$
    IStructuredModel scratchModel = StructuredModelManager.getModelManager().createUnManagedStructuredModelFor(ContentTypeIdForJSP.ContentTypeID_JSP);
    IDocument document = scratchModel.getStructuredDocument();
    viewer.configure(sourceViewerConfiguration);
    viewer.setDocument(document);
    return viewer;
  }
View Full Code Here

      try {
        // Create a new model for Content Assist to operate on. This
        // will simulate
        // a full Document and then adjust the offset numbers in the
        // list of results.
        IStructuredModel internalModel = null;
        IModelManager mmanager = StructuredModelManager.getModelManager();
        internalModel = mmanager.createUnManagedStructuredModelFor(ContentTypeIdForJSP.ContentTypeID_JSP);
        IDOMNode xmlNode = null;
        IDOMModel xmlOuterModel = null;
        if (contentAssistRequest.getNode() instanceof IDOMNode) {
          xmlNode = (IDOMNode) contentAssistRequest.getNode();
          xmlOuterModel = xmlNode.getModel();
          internalModel.setResolver(xmlOuterModel.getResolver());
          internalModel.setBaseLocation(xmlOuterModel.getBaseLocation());
        }
        String contents = StringUtils.strip(contentAssistRequest.getText());
        if (xmlNode != null && contents != null) {
          int additionalShifts = 0;
          // Be sure that custom tags from taglibs also show up
          // by
          // adding taglib declarations to the internal model.
          TLDCMDocumentManager mgr = TaglibController.getTLDCMDocumentManager(xmlOuterModel.getStructuredDocument());
          if (mgr != null) {
            List trackers = mgr.getCMDocumentTrackers(contentAssistRequest.getReplacementBeginPosition());
            if (trackers != null) {
              for (i = 0; i < trackers.size(); i++) {
                CMDocumentTracker tracker = (CMDocumentTracker) trackers.get(i);
                String declaration = tracker.getStructuredDocumentRegion().getText();
                if (declaration != null) {
                  contents = declaration + contents;
                  additionalShifts += declaration.length();
                }
              }
            }
          }
          // Also copy any jsp:useBean tags so that
          // jsp:[gs]etProperty will function
          Document doc = null;
          if (contentAssistRequest.getNode().getNodeType() == Node.DOCUMENT_NODE)
            doc = (Document) node;
          else
            doc = node.getOwnerDocument();
          NodeList useBeans = doc.getElementsByTagName(JSP12Namespace.ElementName.USEBEAN);
          for (int k = 0; k < useBeans.getLength(); k++) {
            IDOMNode useBean = (IDOMNode) useBeans.item(k);
            if (useBean.getStartOffset() < contentAssistRequest.getReplacementBeginPosition()) {
              StringBuffer useBeanText = new StringBuffer("<jsp:useBean"); //$NON-NLS-1$
              for (int j = 0; j < useBean.getAttributes().getLength(); j++) {
                Attr attr = (Attr) useBean.getAttributes().item(j);
                useBeanText.append(' ');
                useBeanText.append(attr.getName());
                useBeanText.append("=\""); //$NON-NLS-1$
                useBeanText.append(attr.getValue());
                useBeanText.append('"');
              }
              useBeanText.append("/>"); //$NON-NLS-1$
              additionalShifts += useBeanText.length();
              contents = useBeanText.toString() + contents;
            }
          }
          internalModel.getStructuredDocument().set(contents);
          int internalOffset = 0;
          boolean quoted = false;
          // if quoted, use position inside and shift by one
          if (contentAssistRequest.getMatchString().length() > 0 && (contentAssistRequest.getMatchString().charAt(0) == '\'' || contentAssistRequest.getMatchString().charAt(0) == '"')) {
            internalOffset = contentAssistRequest.getMatchString().length() - 1 + additionalShifts;
            quoted = true;
          }
          // if unquoted, use position inside
          else if (contentAssistRequest.getMatchString().length() > 0 && contentAssistRequest.getMatchString().charAt(0) == '<')
            internalOffset = contentAssistRequest.getMatchString().length() + additionalShifts;
          else
            internalOffset = contentAssistRequest.getReplacementBeginPosition() - contentAssistRequest.getStartOffset() + additionalShifts;
          depthCount++;
          IndexedRegion internalNode = null;
          int tmpOffset = internalOffset;
          while (internalNode == null && tmpOffset >= 0)
            internalNode = internalModel.getIndexedRegion(tmpOffset--);

          if (internalModel.getFactoryRegistry() != null) {
            // set up the internal model
            if (internalModel.getFactoryRegistry().getFactoryFor(PageDirectiveAdapter.class) == null) {
              internalModel.getFactoryRegistry().addFactory(new PageDirectiveAdapterFactory());
            }
            PageDirectiveAdapter outerEmbeddedTypeAdapter = (PageDirectiveAdapter) xmlOuterModel.getDocument().getAdapterFor(PageDirectiveAdapter.class);
            PageDirectiveAdapter internalEmbeddedTypeAdapter = (PageDirectiveAdapter) ((INodeNotifier) ((Node) internalNode).getOwnerDocument()).getAdapterFor(PageDirectiveAdapter.class);
            internalEmbeddedTypeAdapter.setEmbeddedType(outerEmbeddedTypeAdapter.getEmbeddedType());
          }

          AdapterFactoryRegistry adapterRegistry = JSPUIPlugin.getDefault().getAdapterFactoryRegistry();
          Iterator adapterList = adapterRegistry.getAdapterFactories();
          // And all those appropriate for this particular type
          // of content
          while (adapterList.hasNext()) {
            try {
              AdapterFactoryProvider provider = (AdapterFactoryProvider) adapterList.next();
              if (provider.isFor(internalModel.getModelHandler())) {
                provider.addAdapterFactories(internalModel);
              }
            }
            catch (Exception e) {
              Logger.logException(e);
View Full Code Here

      if (doc != null) {
        try {
          // check if jsp tag/directive first
          ITypedRegion partition = TextUtilities.getPartition(doc, IStructuredPartitioning.DEFAULT_STRUCTURED_PARTITIONING, region.getOffset(), false);
          if (partition != null && partition.getType() == IJSPPartitions.JSP_DIRECTIVE) {
            IStructuredModel sModel = null;
            try {
              sModel = StructuredModelManager.getModelManager().getExistingModelForRead(doc);
              // check if jsp taglib directive
              Node currentNode = getCurrentNode(sModel, region.getOffset());
              if (currentNode != null && currentNode.getNodeType() == Node.ELEMENT_NODE) {
                String baseLocationForTaglib = getBaseLocationForTaglib(doc);
                if (baseLocationForTaglib != null && JSP11Namespace.ElementName.DIRECTIVE_TAGLIB.equalsIgnoreCase(currentNode.getNodeName())) {
                  /**
                   * The taglib directive itself
                   */
                  // get the uri attribute
                  Attr taglibURINode = ((Element) currentNode).getAttributeNode(JSP11Namespace.ATTR_NAME_URI);
                  if (taglibURINode != null) {
                    ITaglibRecord reference = TaglibIndex.resolve(baseLocationForTaglib, taglibURINode.getValue(), false);
                    // when using a tagdir
                    // (ITaglibRecord.TAGDIR),
                    // there's nothing to link to
                    if (reference != null) {
                      // handle taglibs
                      switch (reference.getRecordType()) {
                        case (ITaglibRecord.TLD) : {
                          ITLDRecord record = (ITLDRecord) reference;
                          String uriString = record.getPath().toString();
                          IRegion hyperlinkRegion = getHyperlinkRegion(taglibURINode, region);
                          if (hyperlinkRegion != null) {
                            hyperlink = createHyperlink(uriString, hyperlinkRegion, doc, null);
                          }
                        }
                          break;
                        case (ITaglibRecord.JAR) :
                        case (ITaglibRecord.URL) : {
                          IRegion hyperlinkRegion = getHyperlinkRegion(taglibURINode, region);
                          if (hyperlinkRegion != null) {
                            hyperlink = new TaglibJarUriHyperlink(hyperlinkRegion, reference);
                          }
                        }
                      }
                    }
                  }
                }
                else if (baseLocationForTaglib != null && JSP12Namespace.ElementName.ROOT.equalsIgnoreCase(currentNode.getNodeName())) {
                  /**
                   * The jsp:root element
                   */
                  NamedNodeMap attrs = currentNode.getAttributes();
                  for (int i = 0; i < attrs.getLength(); i++) {
                    Attr attr = (Attr) attrs.item(i);
                    if (attr.getNodeName().startsWith(XMLNS)) {
                      String uri = StringUtils.strip(attr.getNodeValue());
                      if (uri.startsWith(URN_TLD)) {
                        uri = uri.substring(URN_TLD.length());
                      }
                      ITaglibRecord reference = TaglibIndex.resolve(baseLocationForTaglib, uri, false);
                      // when using a tagdir
                      // (ITaglibRecord.TAGDIR),
                      // there's nothing to link to
                      if (reference != null) {
                        // handle taglibs
                        switch (reference.getRecordType()) {
                          case (ITaglibRecord.TLD) : {
                            ITLDRecord record = (ITLDRecord) reference;
                            String uriString = record.getPath().toString();
                            IRegion hyperlinkRegion = getHyperlinkRegion(attr, region);
                            if (hyperlinkRegion != null) {
                              hyperlink = createHyperlink(uriString, hyperlinkRegion, doc, null);
                            }
                          }
                            break;
                          case (ITaglibRecord.JAR) :
                          case (ITaglibRecord.URL) : {
                            IRegion hyperlinkRegion = getHyperlinkRegion(attr, region);
                            if (hyperlinkRegion != null) {
                              hyperlink = new TaglibJarUriHyperlink(hyperlinkRegion, reference);
                            }
                          }
                        }
                      }
                    }
                  }
                }
                else {
                  /**
                   * Hyperlink custom tag to its TLD or tag file
                   */
                  TLDCMDocumentManager documentManager = TaglibController.getTLDCMDocumentManager(doc);
                  if (documentManager != null) {
                    List documentTrackers = documentManager.getCMDocumentTrackers(currentNode.getPrefix(), region.getOffset());
                    for (int i = 0; i < documentTrackers.size(); i++) {
                      TaglibTracker tracker = (TaglibTracker) documentTrackers.get(i);
                      CMElementDeclaration decl = (CMElementDeclaration) tracker.getElements().getNamedItem(currentNode.getNodeName());
                      if (decl != null) {
                        decl = (CMElementDeclaration) ((CMNodeWrapper) decl).getOriginNode();
                        if (decl instanceof CMElementDeclarationImpl) {
                          String base = ((CMElementDeclarationImpl) decl).getLocationString();
                          IRegion hyperlinkRegion = getHyperlinkRegion(currentNode, region);
                          if (hyperlinkRegion != null) {
                            hyperlink = createHyperlink(base, hyperlinkRegion, doc, currentNode);
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
            finally {
              if (sModel != null)
                sModel.releaseFromRead();
            }             
          }
        }
        catch (BadLocationException e) {
          Logger.log(Logger.WARNING_DEBUG, e.getMessage(), e);
View Full Code Here

   */
  private String getBaseLocationForTaglib(IDocument document) {
    String baseLoc = null;

    // get the base location from the current model
    IStructuredModel sModel = null;
    try {
      sModel = StructuredModelManager.getModelManager().getExistingModelForRead(document);
      if (sModel != null) {
        baseLoc = sModel.getBaseLocation();
      }
    }
    finally {
      if (sModel != null) {
        sModel.releaseFromRead();
      }
    }
    return baseLoc;
  }
View Full Code Here

                cleanupProcessor.cleanupModel(editor.getModel());
            }
          };

          // TODO: make independent of 'model'.
          IStructuredModel model = editor.getModel();
          if (model != null) {
            try {
              // begin recording
              ITextSelection selection = (ITextSelection) editor.getSelectionProvider().getSelection();
              model.beginRecording(this, SSEUIMessages.Cleanup_Document_UI_, SSEUIMessages.Cleanup_Document_UI_, selection.getOffset(), selection.getLength()); //$NON-NLS-1$ //$NON-NLS-2$

              // tell the model that we are about to make a big
              // model change
              model.aboutToChangeModel();

              // run
              BusyIndicator.showWhile(editor.getTextViewer().getControl().getDisplay(), runnable);
            } finally {
              // tell the model that we are done with the big
              // model
              // change
              model.changedModel();

              // end recording
              ITextSelection selection = (ITextSelection) editor.getSelectionProvider().getSelection();
              model.endRecording(this, selection.getOffset(), selection.getLength());
            }
          }
        }

      }
View Full Code Here

   */
  protected DirtyRegion getOuterRegion(DirtyRegion root, DirtyRegion possible) {
    // first try simple region check if one region contains the other
    DirtyRegion outer = super.getOuterRegion(root, possible);
    if (outer == null && fCurrentDoc != null) {
      IStructuredModel sModel = null;
      try {
        sModel = getStructuredModelForRead(fCurrentDoc);
        if (sModel != null) {
          // now compare nodes
          IndexedRegion rootRegion = sModel.getIndexedRegion(root.getOffset());
          IndexedRegion possRegion = sModel.getIndexedRegion(possible.getOffset());
          if (rootRegion != null && possRegion != null) {
            int rootStart = rootRegion.getStartOffset();
            int possStart = possRegion.getStartOffset();
            // first just check if rootregion starts before
            // possregion
            if (rootStart <= possStart) {
              // check if possregion is inside rootregion
              outer = _getOuterRegion(root, possible, sModel, rootStart, possStart);
            }
            else {
              // otherwise if rootregion is inside possregion
              outer = _getOuterRegion(possible, root, sModel, possStart, rootStart);
            }
          }
        }
       
      } finally {
        if(sModel != null) {
          sModel.releaseFromRead();
        }
      }
    }
    return outer;
  }
View Full Code Here

TOP

Related Classes of org.eclipse.wst.sse.core.internal.provisional.IStructuredModel

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.