예제 #1
0
        void UpdateSelectedType()
        {
            Metadata.TypeInfo newType = null;
            bool newTypeCanSelect     = false;

            ContentBrowser.Item item = null;
            if (contentBrowser1.SelectedItems.Length != 0)
            {
                item = contentBrowser1.SelectedItems[0];
            }

            if (item != null)
            {
                item.CalculateReferenceValue(null, MetadataManager.GetTypeOfNetType(typeof(Metadata.TypeInfo)),
                                             out string referenceValue, out bool canSet);

                if (canSet)
                {
                    if (!string.IsNullOrEmpty(referenceValue))
                    {
                        newType = (Metadata.TypeInfo)MetadataManager.GetValueByReference(
                            contentBrowser1.SetReferenceModeData.demandedType.GetNetType(), null, referenceValue);
                        newTypeCanSelect = true;
                    }
                    else
                    {
                        newTypeCanSelect = true;
                    }
                }

                //check can be selected
                if (newType != null && !creationData.initDemandedType.IsAssignableFrom(newType))
                {
                    newType          = null;
                    newTypeCanSelect = false;
                }
            }

            //change
            if (selectedType != newType || selectedTypeCanSelect != newTypeCanSelect)
            {
                selectedType          = newType;
                selectedTypeCanSelect = newTypeCanSelect;
                SelectedTypeChanged();
            }
        }
예제 #2
0
        void UpdateSelectedType()
        {
            Metadata.TypeInfo newType = null;

            ContentBrowser.Item item = null;
            if (contentBrowser1.SelectedItems.Length != 0)
            {
                item = contentBrowser1.SelectedItems[0];
            }

            if (item != null)
            {
                item.CalculateReferenceValue(null, MetadataManager.GetTypeOfNetType(typeof(Metadata.TypeInfo)),
                                             out string referenceValue, out bool canSet);

                if (!string.IsNullOrEmpty(referenceValue) && canSet)
                {
                    newType = (Metadata.TypeInfo)MetadataManager.GetValueByReference(
                        contentBrowser1.SetReferenceModeData.demandedType.GetNetType(), null, referenceValue);
                }

                //check can be selected
                if (newType != null)
                {
                    if (!MetadataManager.GetTypeOfNetType(typeof(Component)).IsAssignableFrom(newType) &&
                        !MetadataManager.GetTypeOfNetType(typeof(NewResourceType)).IsAssignableFrom(newType))
                    {
                        newType = null;
                    }
                }
            }

            //change
            if (selectedType != newType)
            {
                selectedType = newType;
                SelectedTypeChanged();
            }
        }
예제 #3
0
        void UpdateSelectedReference()
        {
            //!!!!не только компоненты?

            //!!!!multiselection
            ContentBrowser.Item item = null;
            if (contentBrowser1.SelectedItems.Length != 0)
            {
                item = contentBrowser1.SelectedItems[0];
            }

            string newSelection = null;
            bool   canSet       = false;

            if (item != null)
            {
                //!!!!multiselection?

                item.CalculateReferenceValue(setReferenceModeData.selectedComponents[0], setReferenceModeData.property.TypeUnreferenced, out newSelection, out canSet);

                //make relative file path
                if (kryptonCheckBoxCanMakeRelativeFilePath.Checked && !string.IsNullOrEmpty(newSelection))
                {
                    if (!newSelection.Contains(':'))                       //ignore references
                    {
                        var fromResource       = ComponentUtility.GetOwnedFileNameOfComponent(setReferenceModeData.selectedComponents[0]);
                        var fromResourceFolder = "";
                        if (!string.IsNullOrEmpty(fromResource))
                        {
                            fromResourceFolder = Path.GetDirectoryName(fromResource);
                        }

                        int commonChars = GetEqualPart(new string[] { fromResourceFolder, newSelection });

                        var path = "";

                        //go up (dots)
                        {
                            var c = fromResourceFolder.Substring(commonChars).Split(new char[] { '\\', '/' }, StringSplitOptions.RemoveEmptyEntries).Length;
                            for (int n = 0; n < c; n++)
                            {
                                path = Path.Combine(path, "..");
                            }
                        }

                        //go down
                        {
                            var s = newSelection.Substring(commonChars);
                            if (s.Length != 0 && (s[0] == '\\' || s[0] == '/'))
                            {
                                s = s.Substring(1);
                            }

                            //can't use Path.Combine, invalid character exception
                            if (path.Length != 0 && path[path.Length - 1] != '\\' && path[path.Length - 1] != '/')
                            {
                                path += "\\";
                            }
                            path += s;
                            //path = Path.Combine( path, s );
                        }

                        newSelection = "relative:" + path;
                    }
                }
            }

            //update
            selectedReference       = newSelection;
            selectedReferenceCanSet = canSet;
            UpdateSetButtons();
            UpdateTextBox();
            TextBoxSetError(false);
            ////change
            //if( string.Compare( selectedReference, newSelection ) != 0 )
            //{
            //	selectedReference = newSelection;
            //	selectedReferenceCanSet = canSet;
            //	SelectedReferenceChanged();
            //}
        }