Ignore:
Timestamp:
Jan 4, 2011, 7:23:10 AM (11 years ago)
Author:
matkovic
Message:

-fixed "Fit to Screen"
-fixed Scrollbars
-fixed Dragging
-added custom names
-New: IControl- Presentation
--Loading adjusted
-New: Multi selection
-New: Copy /Past (not complete)
-New: Multi Dragging
-New: PluginContainerView Highlighting added

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/WorkspaceManager/View/Container/PluginContainerView.xaml.cs

    r2120 r2280  
    2222using Cryptool.PluginBase;
    2323using System.ComponentModel;
     24using System.Collections.ObjectModel;
     25using Cryptool.PluginBase.Control;
    2426namespace WorkspaceManager.View.Container
    2527{
     
    7779        }
    7880
     81        public static readonly DependencyProperty IsSelectedDependencyProperty = DependencyProperty.Register("IsSelected", typeof(bool), typeof(PluginContainerView), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure));
     82
     83        [TypeConverter(typeof(bool))]
     84        public bool IsSelected
     85        {
     86            get { return (bool)base.GetValue(IsSelectedDependencyProperty); }
     87            set
     88            {
     89                base.SetValue(IsSelectedDependencyProperty, value);
     90            }
     91        }
     92
     93        public Visibility ICPanelVisibility
     94        {
     95            get { return (Visibility)GetValue(ICPanelVisibilityProperty); }
     96            set
     97            {
     98                SetValue(ICPanelVisibilityProperty, value);
     99            }
     100        }
     101
     102        public static readonly DependencyProperty ICPanelVisibilityProperty =
     103           DependencyProperty.Register(
     104           "ICPanelVisibility",
     105           typeof(Visibility),
     106           typeof(PluginContainerView),
     107           new UIPropertyMetadata(Visibility.Collapsed, null));
     108
     109
    79110        internal Point GetRoutingPoint(int routPoint)
    80111        {
     
    121152            }
    122153        }
     154
     155        private ObservableCollection<ModelWrapper> iCCollection = new ObservableCollection<ModelWrapper>();
     156
     157        public ObservableCollection<ModelWrapper> ICCollection
     158        { get { return iCCollection; } }
    123159
    124160        public static readonly DependencyProperty ViewStateProperty = DependencyProperty.Register("ViewState", typeof(PluginViewState), typeof(PluginContainerView), new FrameworkPropertyMetadata(PluginViewState.Min));
     
    260296            foreach (ConnectorModel ConnectorModel in model.InputConnectors)
    261297            {
     298                if (ConnectorModel.IControl)
     299                    continue;
     300
    262301                ConnectorView connector = new ConnectorView(ConnectorModel, this);
    263302                AddConnectorView(connector);
     
    266305            foreach (ConnectorModel ConnectorModel in model.OutputConnectors)
    267306            {
     307                if (ConnectorModel.IControl)
     308                {
     309                    PluginModel pm = null;
     310                    if (ConnectorModel.OutputConnections.Count > 0)
     311                    {
     312                        pm = ConnectorModel.OutputConnections[0].To.PluginModel;
     313                    }
     314
     315                    ICCollection.Add(new ModelWrapper(ConnectorModel, pm));
     316                    continue;
     317                }
    268318                ConnectorView connector = new ConnectorView(ConnectorModel, this);
    269319                AddConnectorView(connector);
    270320            }
    271321
     322            if (ICCollection.Count == 0)
     323                IC.Visibility = Visibility.Collapsed;
     324           
    272325            DataPanel.Children.Add(new DataPresentation(connectorViewList));
    273326            this.ViewState = Model.ViewState;
     327        }
     328
     329        static bool IsSubclassOfRawGeneric(Type generic, Type toCheck)
     330        {
     331            while (toCheck != typeof(object))
     332            {
     333                var cur = toCheck.IsGenericType ? toCheck.GetGenericTypeDefinition() : toCheck;
     334                if (generic == cur)
     335                {
     336                    return true;
     337                }
     338                toCheck = toCheck.BaseType;
     339            }
     340            return false;
    274341        }
    275342
     
    458525            this.Icon = this.Model.getImage();
    459526            this.PluginName.Text = model.Plugin.GetPluginInfoAttribute().Caption;
     527            this.CTextBox.Text = Model.Name;
     528            this.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(PluginContainerView_MouseLeftButtonDown);
     529            //this.MouseEnter += new MouseEventHandler(PluginContainerView_MouseEnter);
     530            //this.MouseLeave += new MouseEventHandler(PluginContainerView_MouseLeave);
     531        }
     532
     533        //void PluginContainerView_MouseLeave(object sender, MouseEventArgs e)
     534        //{
     535        //    IsMouseOver = false;
     536        //}
     537
     538        //void PluginContainerView_MouseEnter(object sender, MouseEventArgs e)
     539        //{
     540        //    IsMouseOver = true;
     541        //}
     542
     543        void PluginContainerView_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
     544        {
     545            if (!Model.WorkspaceModel.SelectedPluginsList.Contains(this) && Model.WorkspaceModel.WorkspaceEditor.IsKeyMultiKeyDown)
     546            {
     547                Model.WorkspaceModel.SelectedPluginsList.Add(this);
     548                IsSelected = true;
     549            }
     550            else if (!Model.WorkspaceModel.WorkspaceEditor.IsKeyMultiKeyDown)
     551            {
     552                foreach (PluginContainerView plugin in Model.WorkspaceModel.SelectedPluginsList)
     553                {
     554                    plugin.IsSelected = false;
     555                }
     556                Model.WorkspaceModel.SelectedPluginsList.Clear();
     557                Model.WorkspaceModel.SelectedPluginsList.Add(this);
     558                IsSelected = true;
     559            }
    460560        }
    461561
     
    789889        private void Thumb_DragDelta_1(object sender, DragDeltaEventArgs e)
    790890        {
    791             this.SetPosition(new Point((Math.Round((Canvas.GetLeft(this) + e.HorizontalChange) / Properties.Settings.Default.GridScale)) * Properties.Settings.Default.GridScale,
    792                                                             (Math.Round((Canvas.GetTop(this) + e.VerticalChange) / Properties.Settings.Default.GridScale)) * Properties.Settings.Default.GridScale));
     891            foreach (PluginContainerView plugin in Model.WorkspaceModel.SelectedPluginsList)
     892            {
     893                plugin.SetPosition(new Point((Math.Round((Canvas.GetLeft(plugin) + e.HorizontalChange) / Properties.Settings.Default.GridScale)) * Properties.Settings.Default.GridScale,
     894                                                                (Math.Round((Canvas.GetTop(plugin) + e.VerticalChange) / Properties.Settings.Default.GridScale)) * Properties.Settings.Default.GridScale));
     895
     896                if (plugin.GetPosition().X == 0 || plugin.GetPosition().Y == 0)
     897                    break;
     898            }
     899
    793900            Model.WorkspaceModel.WorkspaceManagerEditor.HasChanges = true;
    794901        }
    795902
     903        private void CTextBox_TextChanged(object sender, TextChangedEventArgs e)
     904        {
     905            Model.Name = CTextBox.Text;
     906        }
     907
     908        private void Button_Click_2(object sender, RoutedEventArgs e)
     909        {
     910            if (ICPanelVisibility == Visibility.Visible)
     911                ICPanelVisibility = Visibility.Collapsed;
     912            else if (ICPanelVisibility == Visibility.Collapsed)
     913                ICPanelVisibility = Visibility.Visible;
     914        }
    796915    }
    797916
     
    808927        public PluginContainerView container;
    809928    }
     929
     930    public class ModelWrapper
     931    {
     932        public PluginModel pm { get; private set; }
     933
     934        public ModelWrapper(ConnectorModel model, PluginModel pm)
     935        {
     936            // TODO: Complete member initialization
     937            this.Model = model;
     938            this.pm = pm;
     939        }
     940
     941        public ConnectorModel Model { get; private set; }
     942    }
    810943}
Note: See TracChangeset for help on using the changeset viewer.