Пример #1
0
        public ObjectEditControl(ObjectInfo objInfo)
        {
            if (objInfo == null)
            {
                return;
            }

            objectPanel            = new ObjectEditPanel(objInfo, false);
            objectPanel.AutoScroll = true;
            objectPanel.Dock       = DockStyle.Fill;
            rightPanel.Dock        = DockStyle.Right;

            this.Controls.AddRange(new Control[] { objectPanel, rightPanel });

            this.AutoScroll = true;
            this.BackColor  = Color.White;

            //--- Create operations panel ---

            Panel operations = new Panel();

            operations.BackColor = Color.LightYellow;
            Label operationLabel = new Label();

            operationLabel.Font      = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold | FontStyle.Underline);
            operationLabel.Text      = "Operations";
            operationLabel.ForeColor = Color.Black;
            operationLabel.Location  = new Point(10, 10);
            operations.Controls.Add(operationLabel);

            toXmlLink          = new LinkLabel();
            toXmlLink.AutoSize = true;
            toXmlLink.Text     = "Serialize to XML";
            toXmlLink.Location = new Point(10, 40);
            toXmlLink.Click   += new EventHandler(toXmlLink_Click);
            operations.Controls.Add(toXmlLink);


            if (Safir.Dob.Typesystem.Operations.IsOfType(objInfo.Obj.GetTypeId(), Safir.Dob.Entity.ClassTypeId))
            {
                setChangesEntityLink          = new LinkLabel();
                setChangesEntityLink.AutoSize = true;
                setChangesEntityLink.Text     = "SetChanges";
                setChangesEntityLink.Location = new Point(10, 60);
                setChangesEntityLink.Click   += new EventHandler(setChangesEntityLink_Click);

                setAllEntityLink          = new LinkLabel();
                setAllEntityLink.AutoSize = true;
                setAllEntityLink.Text     = "SetAll";
                setAllEntityLink.Location = new Point(10, 80);
                setAllEntityLink.Click   += new EventHandler(setAllEntityLink_Click);

                deleteEntityLink          = new LinkLabel();
                deleteEntityLink.AutoSize = true;
                deleteEntityLink.Text     = "Delete";
                deleteEntityLink.Location = new Point(10, 100);
                deleteEntityLink.Click   += new EventHandler(deleteEntityLink_Click);

                createEntityReqLink          = new LinkLabel();
                createEntityReqLink.AutoSize = true;
                createEntityReqLink.Text     = "Create Request (requestor dec.)";
                createEntityReqLink.Location = new Point(10, 120);
                createEntityReqLink.Click   += new EventHandler(createEntityReqLink_Click);

                createEntityHandlerDecidesReqLink          = new LinkLabel();
                createEntityHandlerDecidesReqLink.AutoSize = true;
                createEntityHandlerDecidesReqLink.Text     = "Create Request (handler dec.)";
                createEntityHandlerDecidesReqLink.Location = new Point(10, 140);
                createEntityHandlerDecidesReqLink.Click   += new EventHandler(createEntityHandlerDecidesReqLink_Click);

                updateEntityReqLink          = new LinkLabel();
                updateEntityReqLink.AutoSize = true;
                updateEntityReqLink.Text     = "Update Request";
                updateEntityReqLink.Location = new Point(10, 160);
                updateEntityReqLink.Click   += new EventHandler(updateEntityReqLink_Click);

                deleteEntityReqLink          = new LinkLabel();
                deleteEntityReqLink.AutoSize = true;
                deleteEntityReqLink.Text     = "Delete Request";
                deleteEntityReqLink.Location = new Point(10, 180);
                deleteEntityReqLink.Click   += new EventHandler(deleteEntityReqLink_Click);

                handlerIdInputLabel          = new Label();
                handlerIdInputLabel.AutoSize = true;
                handlerIdInputLabel.Text     = "HandlerId:";
                handlerIdInputLabel.Location = new Point(10, 200);
                operations.Controls.Add(handlerIdInputLabel);

                handlerIdInputTextBox = new TextBox();
                bool gotValue = false;
                if (objInfo is EntityInfo)
                {
                    EntityInfo entityInfo = (EntityInfo)objInfo;
                    if (entityInfo.getHandlerId() != null)
                    {
                        handlerIdInputTextBox.Text = ((EntityInfo)objInfo).getHandlerId().ToString();
                        gotValue = true;
                    }
                }
                if (!gotValue)
                {
                    handlerIdInputTextBox.Text = "DEFAULT_HANDLER";
                }
                handlerIdInputTextBox.Location     = new Point(10, 220); //new Point(idInputLabel.Location.X + idInputLabel.Width, 10);
                handlerIdInputTextBox.Width        = 120;
                handlerIdInputTextBox.TextChanged += new EventHandler(handlerIdInputTextBox_TextChanged);
                operations.Controls.Add(handlerIdInputTextBox);

                operations.Controls.AddRange(new Control[] { setChangesEntityLink,
                                                             setAllEntityLink,
                                                             deleteEntityLink,
                                                             createEntityReqLink,
                                                             createEntityHandlerDecidesReqLink,
                                                             updateEntityReqLink,
                                                             deleteEntityReqLink });


                if (Safir.Dob.InjectionProperty.HasProperty(objInfo.Obj) &&
                    Safir.Dob.InjectionProperty.GetInjection(objInfo.Obj) == Safir.Dob.InjectionKind.Enumeration.Injectable)
                {
                    injectTimestampLabel          = new Label();
                    injectTimestampLabel.AutoSize = true;
                    injectTimestampLabel.Text     = "Timestamp:";
                    injectTimestampLabel.Location = new Point(10, 320);
                    operations.Controls.Add(injectTimestampLabel);

                    injectTimestampTextBox              = new TextBox();
                    injectTimestampTextBox.Text         = "0";
                    injectTimestampTextBox.Location     = new Point(10, 340); //new Point(idInputLabel.Location.X + idInputLabel.Width, 10);
                    injectTimestampTextBox.Width        = 120;
                    injectTimestampTextBox.TextChanged += new EventHandler(injectTimestampTextBox_TextChanged);
                    operations.Controls.Add(injectTimestampTextBox);

                    injectChangesLink          = new LinkLabel();
                    injectChangesLink.AutoSize = true;
                    injectChangesLink.Text     = "InjectChanges";
                    injectChangesLink.Location = new Point(10, 260);
                    injectChangesLink.Click   += new EventHandler(injectChangesLink_Click);

                    injectInitialSetLink          = new LinkLabel();
                    injectInitialSetLink.AutoSize = true;
                    injectInitialSetLink.Text     = "Inject InitialSet";
                    injectInitialSetLink.Location = new Point(10, 280);
                    injectInitialSetLink.Click   += new EventHandler(injectInitialSetLink_Click);

                    injectDeleteLink          = new LinkLabel();
                    injectDeleteLink.AutoSize = true;
                    injectDeleteLink.Text     = "InjectDelete";
                    injectDeleteLink.Location = new Point(10, 300);
                    injectDeleteLink.Click   += new EventHandler(injectDeleteLink_Click);


                    operations.Controls.AddRange(new Control[] { injectInitialSetLink,
                                                                 injectChangesLink,
                                                                 injectDeleteLink });
                }
            }

            if (Safir.Dob.Typesystem.Operations.IsOfType(objInfo.Obj.GetTypeId(), Safir.Dob.Message.ClassTypeId))
            {
                sendMessageLink          = new LinkLabel();
                sendMessageLink.AutoSize = true;
                sendMessageLink.Text     = "Send Message";
                sendMessageLink.Location = new Point(10, 60);
                sendMessageLink.Click   += new EventHandler(sendMessageLink_Click);
                operations.Controls.Add(sendMessageLink);

                channelIdInputLabel          = new Label();
                channelIdInputLabel.AutoSize = true;
                channelIdInputLabel.Text     = "ChannelId:";
                channelIdInputLabel.Location = new Point(10, 180);
                operations.Controls.Add(channelIdInputLabel);

                channelIdInputTextBox = new TextBox();
                bool gotValue = false;
                if (objInfo is MessageInfo)
                {
                    MessageInfo messageInfo = (MessageInfo)objInfo;
                    if (messageInfo.getChannelId() != null)
                    {
                        channelIdInputTextBox.Text = ((MessageInfo)objInfo).getChannelId().ToString();
                        gotValue = true;
                    }
                }
                if (!gotValue)
                {
                    channelIdInputTextBox.Text = "DEFAULT_CHANNEL";
                }
                channelIdInputTextBox.Location     = new Point(10, 200); //new Point(idInputLabel.Location.X + idInputLabel.Width, 10);
                channelIdInputTextBox.Width        = 120;
                channelIdInputTextBox.TextChanged += new EventHandler(channelIdInputTextBox_TextChanged);
                operations.Controls.Add(channelIdInputTextBox);
            }

            else if (Safir.Dob.Typesystem.Operations.IsOfType(objInfo.Obj.GetTypeId(), Safir.Dob.Service.ClassTypeId))
            {
                sendServiceReqLink          = new LinkLabel();
                sendServiceReqLink.AutoSize = true;
                sendServiceReqLink.Text     = "Send Service Request";
                sendServiceReqLink.Location = new Point(10, 60);
                sendServiceReqLink.Click   += new EventHandler(sendServiceReqLink_Click);
                operations.Controls.Add(sendServiceReqLink);

                handlerIdInputLabel          = new Label();
                handlerIdInputLabel.AutoSize = true;
                handlerIdInputLabel.Text     = "HandlerId:";
                handlerIdInputLabel.Location = new Point(10, 180);
                operations.Controls.Add(handlerIdInputLabel);

                handlerIdInputTextBox = new TextBox();
                bool gotValue = false;
                if (objInfo is EntityInfo)
                {
                    EntityInfo entityInfo = (EntityInfo)objInfo;
                    if (entityInfo.getHandlerId() != null)
                    {
                        handlerIdInputTextBox.Text = ((EntityInfo)objInfo).getHandlerId().ToString();
                        gotValue = true;
                    }
                }
                if (!gotValue)
                {
                    handlerIdInputTextBox.Text = "DEFAULT_HANDLER";
                }
                handlerIdInputTextBox.Location     = new Point(10, 200); //new Point(idInputLabel.Location.X + idInputLabel.Width, 10);
                handlerIdInputTextBox.Width        = 120;
                handlerIdInputTextBox.TextChanged += new EventHandler(handlerIdInputTextBox_TextChanged);
                operations.Controls.Add(handlerIdInputTextBox);
            }

            else if (Safir.Dob.Typesystem.Operations.IsOfType(objInfo.Obj.GetTypeId(), Safir.Dob.Response.ClassTypeId))
            {
                useReplyLink          = new LinkLabel();
                useReplyLink.AutoSize = true;
                useReplyLink.Text     = "Use as default response";
                useReplyLink.Location = new Point(10, 60);
                useReplyLink.Click   += new EventHandler(useReplyLink_Click);
                operations.Controls.Add(useReplyLink);
            }

            //live data check box
            liveDataCheckBox.Location = new Point(10, 360);
            liveDataCheckBox.Text     = "Live data";
            operations.Controls.Add(liveDataCheckBox);

            operations.Size     = new Size(170, 380);
            operations.Location = new Point(20, 40);

            rightPanel.Controls.Add(operations);

            this.Tag = objInfo;
        }