Changeset 10491 for platform/silverlight

Show
Ignore:
Timestamp:
04/26/08 10:17:39 (5 years ago)
Author:
coma2n
Message:

platform/silverlight/Swit/trunk: update

Location:
platform/silverlight/Swit/trunk/src
Files:
9 modified

Legend:

Unmodified
Added
Removed
  • platform/silverlight/Swit/trunk/src/Swit/App.xaml.cs

    r10215 r10491  
    2626using System.Windows; 
    2727using System.Windows.Controls; 
     28using System.Net; 
     29using System.Windows.Browser; 
    2830 
    2931#endregion 
  • platform/silverlight/Swit/trunk/src/Swit/Page.xaml

    r10215 r10491  
    1616    </UserControl.Resources> 
    1717     
    18     <StackPanel Width="350" Margin="6" HorizontalAlignment="Left" VerticalAlignment="Top"> 
    19         <ListBox x:Name="logList" Height="300"> 
     18    <Grid Margin="6" HorizontalAlignment="Left" VerticalAlignment="Top"> 
     19        <Grid.ColumnDefinitions> 
     20            <ColumnDefinition Width="350" /> 
     21            <ColumnDefinition /> 
     22        </Grid.ColumnDefinitions> 
     23         
     24        <StackPanel> 
     25            <ListBox x:Name="logList" Height="300" MouseLeftButtonDown="logList_MouseLeftButtonDown"> 
     26                <ListBox.Template> 
     27                    <ControlTemplate> 
     28                        <ScrollViewer VerticalScrollBarVisibility="Auto"> 
     29                            <ItemsPresenter /> 
     30                        </ScrollViewer> 
     31                    </ControlTemplate> 
     32                </ListBox.Template> 
     33 
     34                <ListBox.ItemTemplate> 
     35                    <DataTemplate> 
     36                        <StackPanel Width="330" Margin="4"> 
     37                            <Grid> 
     38                                <TextBlock Text="{Binding User}" FontSize="12" TextDecorations="Underline" /> 
     39                             
     40                            <TextBlock Text="{Binding DateString}" FontSize="12" Margin="0,0,8,0" HorizontalAlignment="Right" /> 
     41                        </Grid> 
     42 
     43                            <TextBlock Text="{Binding Message}" FontSize="16" TextWrapping="Wrap" /> 
     44                    </StackPanel> 
     45                    </DataTemplate> 
     46                </ListBox.ItemTemplate> 
     47            </ListBox> 
     48 
     49            <Grid Margin="0,5,0,0"> 
     50                <Grid.ColumnDefinitions> 
     51                    <ColumnDefinition /> 
     52                    <ColumnDefinition Width="60" /> 
     53                </Grid.ColumnDefinitions> 
     54 
     55                <TextBox x:Name="msgInput" FontSize="14" Margin="0,0,5,0" KeyDown="msgInput_KeyDown" /> 
     56 
     57                <Button x:Name="sendButton" Grid.Column="1" Content="送信" Cursor="Hand" 
     58                    Click="sendButton_Click" MouseMove="sendButton_MouseMove" MouseLeave="sendButton_MouseLeave"> 
     59                    <Button.Background> 
     60                        <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 
     61                            <GradientStop Color="White" Offset="0" /> 
     62                            <GradientStop x:Name="highlightColor" Color="Black" Offset="0.55" /> 
     63                            <GradientStop Color="White" Offset="1" /> 
     64                        </LinearGradientBrush> 
     65                    </Button.Background> 
     66 
     67                    <Button.Template> 
     68                        <ControlTemplate TargetType="Button"> 
     69                            <Border Background="{TemplateBinding Background}" CornerRadius="6" 
     70                                BorderBrush="Black" BorderThickness="1"> 
     71                                <ContentPresenter Content="{TemplateBinding Content}" Foreground="White" 
     72                                              HorizontalAlignment="Center" VerticalAlignment="Center" /> 
     73                            </Border> 
     74                        </ControlTemplate> 
     75                    </Button.Template> 
     76                </Button> 
     77            </Grid> 
     78 
     79            <TextBlock x:Name="statusText" FontSize="12" HorizontalAlignment="Right" /> 
     80        </StackPanel> 
     81         
     82        <ListBox x:Name="userList" Grid.Column="1" 
     83                 Width="100" Height="150" Margin="10,0,0,0" VerticalAlignment="Top"> 
    2084            <ListBox.Template> 
    2185                <ControlTemplate> 
    22                     <ScrollViewer VerticalScrollBarVisibility="Auto"> 
    23                         <ItemsPresenter /> 
     86                    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> 
     87                        <ItemsPresenter IsHitTestVisible="False" /> 
    2488                    </ScrollViewer> 
    2589                </ControlTemplate> 
    2690            </ListBox.Template> 
    27              
    28             <ListBox.ItemTemplate> 
    29                 <DataTemplate> 
    30                     <StackPanel Width="340" Margin="4"> 
    31                         <Grid> 
    32                             <TextBlock Text="{Binding User}" FontSize="12" TextDecorations="Underline" /> 
    33                              
    34                             <TextBlock Text="{Binding DateString}" FontSize="12" HorizontalAlignment="Right" /> 
    35                         </Grid> 
    36                          
    37                         <TextBlock Text="{Binding Message}" FontSize="16" TextWrapping="Wrap" /> 
    38                     </StackPanel> 
    39                 </DataTemplate> 
    40             </ListBox.ItemTemplate> 
    4191        </ListBox> 
    42          
    43         <Grid Margin="0,5,0,0"> 
    44             <Grid.ColumnDefinitions> 
    45                 <ColumnDefinition /> 
    46                 <ColumnDefinition Width="60" /> 
    47             </Grid.ColumnDefinitions> 
    48              
    49             <TextBox x:Name="msgInput" FontSize="14" Margin="0,0,5,0" KeyDown="msgInput_KeyDown" /> 
    50              
    51             <Button x:Name="sendButton" Grid.Column="1" Content="送信" Cursor="Hand" 
    52                     Click="sendButton_Click" MouseMove="sendButton_MouseMove" MouseLeave="sendButton_MouseLeave"> 
    53                 <Button.Background> 
    54                     <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 
    55                         <GradientStop Color="White" Offset="0" /> 
    56                         <GradientStop x:Name="highlightColor" Color="Black" Offset="0.55" /> 
    57                         <GradientStop Color="White" Offset="1" /> 
    58                     </LinearGradientBrush> 
    59                 </Button.Background> 
    60                  
    61                 <Button.Template> 
    62                     <ControlTemplate TargetType="Button"> 
    63                         <Border Background="{TemplateBinding Background}" CornerRadius="6" 
    64                                 BorderBrush="Black" BorderThickness="1"> 
    65                             <ContentPresenter Content="{TemplateBinding Content}" Foreground="White" 
    66                                               HorizontalAlignment="Center" VerticalAlignment="Center" /> 
    67                         </Border> 
    68                     </ControlTemplate> 
    69                 </Button.Template> 
    70             </Button> 
    71         </Grid> 
    72          
    73         <TextBlock x:Name="statusText" FontSize="12" HorizontalAlignment="Right" /> 
    74     </StackPanel> 
     92    </Grid> 
    7593     
    7694</UserControl> 
  • platform/silverlight/Swit/trunk/src/Swit/Page.xaml.cs

    r10215 r10491  
    5353                private bool downloading = false; 
    5454 
     55        /// <summary> 
     56        /// 最後にリストをクリックした時間 
     57        /// </summary> 
     58        private DateTime lastClickTime = DateTime.MinValue; 
     59 
    5560                #endregion 
    5661 
     
    148153                } 
    149154 
     155        /// <summary> 
     156        /// 現在ログインしているユーザの一覧を取得します。 
     157        /// </summary> 
     158        /// <param name="callback">取得が完了した時に呼び出されるコールバック</param> 
     159        private void GetLoginUsers(Action callback) { 
     160            var webClient = new WebClient(); 
     161            webClient.DownloadStringCompleted += (s, e) => { 
     162                if(e.Error == null) { 
     163                    var xml = XDocument.Parse(e.Result); 
     164                    var result = from user in xml.Descendants("user") 
     165                                 select (string)user; 
     166 
     167                    userList.ItemsSource = result; 
     168 
     169                    if(callback != null) callback(); 
     170                } 
     171            }; 
     172            webClient.DownloadStringAsync(new Uri(AppBase + "Swit/Users.aspx")); 
     173        } 
     174 
    150175                /// <summary> 
    151176                /// 指定したメッセージを表示します。 
     
    164189 
    165190                private void UserControl_Loaded(object sender, RoutedEventArgs e) { 
    166                         timer = new Timer(o => Dispatcher.BeginInvoke(() => GetLog(null))); 
     191            timer = new Timer(o => Dispatcher.BeginInvoke( 
     192                () => GetLoginUsers(() => GetLog(() => PrintMessage("メッセージを更新しました。"))) 
     193            )); 
    167194                        timer.Change(0, 60000); // 一分 
    168195 
     
    171198 
    172199                private void sendButton_Click(object sender, RoutedEventArgs e) { 
    173                         if(msgInput.Text.Length > 0) { 
    174                                 SendMessage(msgInput.Text, () => { 
    175                                         msgInput.Text = string.Empty; 
    176  
    177                                         GetLog(() => PrintMessage("メッセージを更新しました。")); 
    178                                 }); 
    179                         } 
     200            if(msgInput.Text.Length > 0) { 
     201                SendMessage(msgInput.Text, () => { 
     202                    msgInput.Text = string.Empty; 
     203 
     204                    GetLog(() => PrintMessage("メッセージを更新しました。")); 
     205                }); 
     206 
     207            } else GetLog(() => PrintMessage("メッセージを更新しました。")); 
     208 
    180209                        msgInput.Focus(); 
    181210                } 
     
    189218                private void sendButton_MouseMove(object sender, MouseEventArgs e) { highlightAnime.Begin(); } 
    190219                private void sendButton_MouseLeave(object sender, MouseEventArgs e) { highlightAnime.Stop(); } 
     220 
     221        private void logList_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { 
     222            var now = DateTime.Now; 
     223 
     224            if((now - lastClickTime).TotalMilliseconds <= 200) { 
     225                var log = (Log)logList.SelectedItem; 
     226 
     227                if(log != null && msgInput.Text.Length == 0) { 
     228                    msgInput.Text = string.Format(">{0} ", log.User); 
     229                    msgInput.Focus(); 
     230                    msgInput.SelectionStart = msgInput.Text.Length; 
     231                } 
     232            } 
     233            lastClickTime = now; 
     234        } 
    191235 
    192236                #endregion 
  • platform/silverlight/Swit/trunk/src/Swit_Web/App_Data/msgLog.xml

    r10216 r10491  
    11<?xml version="1.0" encoding="utf-8"?> 
    2 <logs /> 
     2<logs> 
     3  <log> 
     4    <user>coma2n</user> 
     5    <message>hoge</message> 
     6    <date>2008-04-25T16:42:05.3437</date> 
     7  </log> 
     8  <log> 
     9    <user>coma2n</user> 
     10    <message>&gt;coma2n hello</message> 
     11    <date>2008-04-25T16:44:07.1875</date> 
     12  </log> 
     13</logs> 
  • platform/silverlight/Swit/trunk/src/Swit_Web/Controllers/SwitController.cs

    r10215 r10491  
    2424 
    2525using System; 
     26using System.IO; 
    2627using System.Web.Mvc; 
    2728using System.Xml.Linq; 
    2829using System.Text; 
    2930using System.Linq; 
     31using System.Collections.Generic; 
    3032using System.Diagnostics; 
    31 using System.IO; 
    3233 
    3334#endregion 
     
    127128                } 
    128129 
     130        /// <summary> 
     131        /// 現在ログインしているユーザの一覧を取得します。 
     132        /// </summary> 
     133        public void Users() { 
     134            var loginUsers = (List<string>)HttpContext.Application["loginUsers"]; 
     135 
     136            if(loginUsers != null) { 
     137                var outXml = new XDocument(); 
     138                outXml.Declaration = new XDeclaration("1.0", "utf-8", "no"); 
     139 
     140                outXml.Add(new XElement("users", 
     141                    loginUsers.Select(name => new XElement("user", name)) 
     142                )); 
     143                OutputValue(outXml.ToString(), "text/xml"); 
     144            } 
     145        } 
     146 
    129147                #region private 
    130148 
  • platform/silverlight/Swit/trunk/src/Swit_Web/Global.asax.cs

    r10215 r10491  
    4040            RouteTable.Routes.Add(new Route("{controller}/{action}.aspx", new MvcRouteHandler())); 
    4141                } 
     42 
    4243        } 
    4344} 
  • platform/silverlight/Swit/trunk/src/Swit_Web/Login.aspx.cs

    r10215 r10491  
    2525using System; 
    2626using System.Web.Security; 
     27using System.Collections.Generic; 
    2728 
    2829#endregion 
     
    3839                protected void loginButton_Click(object sender, EventArgs e) { 
    3940                        if(userInput.Text.Length != 0) { 
     41                var loginUsers = (List<string>)Application["loginUsers"]; 
     42 
     43                if(loginUsers == null) { 
     44                    loginUsers = new List<string>(); 
     45 
     46                    Application["loginUsers"] = loginUsers; 
     47                } 
     48                if(!loginUsers.Contains(userInput.Text)) loginUsers.Add(userInput.Text); 
     49 
    4050                                FormsAuthentication.RedirectFromLoginPage(userInput.Text, false); 
    4151                        } 
  • platform/silverlight/Swit/trunk/src/Swit_Web/Swit_Web.csproj.user

    r10217 r10491  
    1111          <SQLDebugging>False</SQLDebugging> 
    1212          <PublishCopyOption>RunFiles</PublishCopyOption> 
    13           <PublishTargetLocation>ftp://www.coma2n.com/demo/swit/</PublishTargetLocation> 
     13          <PublishTargetLocation>http://www.coma2n.com/demo/swit/</PublishTargetLocation> 
    1414          <PublishDeleteAllFiles>False</PublishDeleteAllFiles> 
    1515          <PublishCopyAppData>True</PublishCopyAppData> 
  • platform/silverlight/Swit/trunk/src/Swit_Web/Views/Home/Index.aspx.cs

    r10215 r10491  
    2424 
    2525using System; 
     26using System.Collections.Generic; 
    2627 
    2728#endregion 
    2829 
    2930namespace Swit.Web.Views.Home { 
     31    /// <summary> 
     32    ///  
     33    /// </summary> 
    3034        public partial class Index : System.Web.Mvc.ViewPage { 
    3135                protected void Page_Load(object sender, EventArgs e) { 
     
    3438                protected void LoginStatus1_LoggedOut(object sender, EventArgs e) { 
    3539                        Session.Abandon(); 
     40 
     41            var loginUsers = (List<string>)Application["loginUsers"]; 
     42 
     43            if(loginUsers != null) { 
     44                loginUsers.Remove(User.Identity.Name); 
     45            } 
    3646                } 
    3747        }