//Word.ContentControl copiedCC)
        public ContentControlHandlerAbstract()
        {
            fabDocxState = (FabDocxState)Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory).Tag;
            //this.copiedCC = copiedCC;

            model = fabDocxState.model;
            xppe = new XPathsPartEntry(model); // used to get entries
            cpe = new ConditionsPartEntry(model);
        }
コード例 #2
0
        public void enable(bool newDocument)
        {
            string majorVersionString = Globals.ThisAddIn.Application.Version.Split(new char[] { '.' })[0];
            majorVersion = Convert.ToInt32(majorVersionString);

            /* String xml = System.IO.File.ReadAllText(@"C:\Users\jharrop\workspace\docx4j_1\sample-docs\aaa Document.xml");
            object missing = System.Reflection.Missing.Value;
            Globals.ThisAddIn.Application.Selection.InsertXML(xml, ref missing);
             */
            Word.Document document = Globals.ThisAddIn.Application.ActiveDocument;

            Microsoft.Office.Tools.Word.Document extendedDocument
                = Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory);

            extendedDocument.ContentControlBeforeDelete += new Word.DocumentEvents2_ContentControlBeforeDeleteEventHandler(extendedDocument_ContentControlBeforeDelete);
            extendedDocument.ContentControlAfterAdd += new Word.DocumentEvents2_ContentControlAfterAddEventHandler(extendedDocument_ContentControlAfterAdd);

            extendedDocument.ContentControlOnEnter +=new Word.DocumentEvents2_ContentControlOnEnterEventHandler(extendedDocument_ContentControlOnEnter);
            extendedDocument.ContentControlOnExit += new Word.DocumentEvents2_ContentControlOnExitEventHandler(extendedDocument_ContentControlOnExit);
            extendedDocument.ContentControlBeforeStoreUpdate += new Word.DocumentEvents2_ContentControlBeforeStoreUpdateEventHandler(extendedDocument_ContentControlBeforeStoreUpdate);

            extendedDocument.BeforeRightClick += new Microsoft.Office.Tools.Word.ClickEventHandler(extendedDocument_BeforeRightClick);

            extendedDocument.BuildingBlockInsert += new Word.DocumentEvents2_BuildingBlockInsertEventHandler(extendedDocument_BuildingBlockInsert);

            extendedDocument.Shutdown += new EventHandler(Globals.ThisAddIn.extendedDocument_Shutdown);

            FabDocxState fabDocxState = new FabDocxState();
            extendedDocument.Tag = fabDocxState;

            PartCreator pc = null;

            if (newDocument)
            {
                log.Info("OpenDoPE parts not detected; adding now.");
                // Questions - I expect most users will want these,
                // since this particular add-in is targeted at the
                // interactive case,
                // but some won't .. some people doing non-interactive
                // processing won't have their own xml formats.
                // Design decision: always have questions part,
                // as a way of documenting what the answers mean.
                // (Better than to put the description in the answer part)
                // TODO: add meta description to questions.xsd
                pc = new PartCreator();
                pc.process(true);
            }
            else
            {
                // Register content controls
                foreach (Word.ContentControl ccx in Globals.ThisAddIn.Application.ActiveDocument.ContentControls)
                {
                    fabDocxState.registerKnownSdt(ccx);
                }
            }

            fabDocxState.model = Model.ModelFactory(document);
            if (fabDocxState.model.answersPart == null)
            {
                Office.CustomXMLPart answerPart = pc.createAnswersPart(document);

                fabDocxState.model = Model.ModelFactory(document);
                //fabDocxState.model.userParts.Add(answerPart);
                fabDocxState.model.answersPart = answerPart;
                //log.Info(answersXml);
            }
            else
            {
                log.Info("Using existing answers: " + fabDocxState.model.answersPart.XML);
                fabDocxState.model.answersPart.NamespaceManager.AddNamespace("oda", "http://opendope.org/answers");
            }

            // Now we have model, we can:
            try
            {
                fabDocxState.initTaskPane(document);
            }
            catch (Exception e)
            {
                log.Error(e);
                /*
                 * The Stack Trace is:
                      at System.Runtime.InteropServices.Marshal.IsComObject(Object o)
                      at System.Runtime.InteropServices.ComAwareEventInfo.AddEventHandler(Object target, Delegate handler)
                      at Microsoft.Office.Tools.CustomTaskPaneImpl..ctor(_CustomTaskPane customTaskPane, UserControl control)
                      at Microsoft.Office.Tools.CustomTaskPaneCollectionImpl.AddHelper(UserControl control, String title, Object window)
                      at Microsoft.Office.Tools.CustomTaskPaneCollectionImpl.Add(UserControl control, String title, Object window
                 */
                // No matter; we do it later
            }
            //MessageBox.Show("task pane inited");

            // Load FabDocx.dotx
            GlobalTemplateManager.GetGlobalTemplateManager();
        }
コード例 #3
0
 public NodeMover()
 {
     fabDocxState = (FabDocxState)Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory).Tag;
 }
コード例 #4
0
        static void CopyBuildingBlockLogic(Word.Document document, Word.Range Range, FabDocxState fabDocxState)
        {
            System.Threading.Thread.Sleep(300);

            // We need to copy the logic over
            GlobalTemplateManager.GetGlobalTemplateManager().copyBuildingBlockLogic(document, Range);

            // If its being copied into a repeat, either:
            // 1. tell them sorry, can't be done; or
            // 2. move the repeated variables (and xpaths..) into that repeat!

            document.Activate();

            if (fabDocxState.TaskPane.Visible)
            {
                Controls.LogicTaskPaneUserControl ltp = (Controls.LogicTaskPaneUserControl)fabDocxState.TaskPane.Control;
                ltp.populateLogicInUse();
            }
        }