public void Draw()
        {
            GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1));

            EditorGUILayout.BeginHorizontal();

            _fold = EditorGUI.Foldout(GetFoldRect(), _fold, "Input");

            GUIStyle gearStyle = new GUIStyle("Icon.Options");

            GUILayout.FlexibleSpace();
            if (GUILayout.Button(gearStyle.normal.background, new GUIStyle("IconButton")))
            {
                GenericMenu menu = new GenericMenu();
                menu.AddItem(new GUIContent("Remove"), false, data =>
                {
                    TextureItem item = data as TextureItem;
                    item.ToDelete    = true;
                }, this);

                menu.ShowAsContext();
            }

            using (new EditorGUI.IndentLevelScope(1))
            {
                EditorGUILayout.EndHorizontal();
                if (_fold)
                {
                    GUILayout.BeginHorizontal(TexturePackerStyles.Heading);

                    GUILayout.BeginVertical(TexturePackerStyles.Heading);

                    GUILayout.Label("Channels Selection:");

                    string [] channels = new string [] { "Red", "Green", "Blue", "Alpha" };

                    for (int i = 0; i < 4; ++i)
                    {
                        GUILayout.BeginHorizontal();

                        TextureChannel texChannel = (TextureChannel)i;

                        TextureChannelInput channelInput = input.GetChannelInput(texChannel);

                        channelInput.enabled = GUILayout.Toggle(channelInput.enabled, new GUIContent(" " + channels [i]), GUILayout.Width(60));

                        GUILayout.Label(">");

                        channelInput.output = (TextureChannel)EditorGUILayout.Popup((int)channelInput.output, channels, GUILayout.Width(80));

                        input.SetChannelInput(texChannel, channelInput);

                        GUILayout.EndHorizontal();
                    }

                    GUILayout.EndVertical();

                    input.texture = EditorGUILayout.ObjectField(input.texture, typeof(Texture2D), false, GUILayout.Width(90), GUILayout.Height(80)) as Texture2D;

                    GUILayout.EndHorizontal();
                }
            }
        }
 public void SetChannelInput(TextureChannel channel, TextureChannelInput channelInput)
 {
     _inputs[channel] = channelInput;
 }