Commit for development environment setup
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.50727</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{B390C88E-66FD-4E84-8149-29852AFA8723}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>EnterpriseServicesHostcs</RootNamespace>
|
||||
<AssemblyName>EnterpriseServicesHostcs</AssemblyName>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>eskey.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Csla, Version=2.0.0.0, Culture=neutral, PublicKeyToken=93be5fdc093e4c30, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\csla20cs\Csla\bin\Debug\Csla.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.EnterpriseServices" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="EnterpriseServicesPortal.cs" />
|
||||
<Compile Include="EnterpriseServicesProxy.cs" />
|
||||
<Compile Include="EnterpriseServicesSettings.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="application.config" />
|
||||
<None Include="application.manifest" />
|
||||
<None Include="eskey.snk" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ProjectTracker.Library\ProjectTracker.Library.csproj">
|
||||
<Project>{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}</Project>
|
||||
<Name>ProjectTracker.Library</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.EnterpriseServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace EnterpriseServicesHost
|
||||
{
|
||||
[EventTrackingEnabled(true)]
|
||||
[ComVisible(true)]
|
||||
public class EnterpriseServicesPortal :
|
||||
Csla.Server.Hosts.EnterpriseServicesPortal
|
||||
{
|
||||
// no code needed - implementation is in the base class
|
||||
}
|
||||
}
|
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace EnterpriseServicesHost
|
||||
{
|
||||
public class EnterpriseServicesProxy :
|
||||
Csla.DataPortalClient.EnterpriseServicesProxy
|
||||
{
|
||||
protected override
|
||||
Csla.Server.Hosts.EnterpriseServicesPortal GetServerObject()
|
||||
{
|
||||
return new EnterpriseServicesPortal();
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,7 @@
|
||||
using System;
|
||||
using System.EnterpriseServices;
|
||||
|
||||
[assembly: ApplicationActivation(ActivationOption.Server)]
|
||||
[assembly: ApplicationName("ProjectTracker20cs Portal")]
|
||||
[assembly: Description("Project Tracker DataPortal host")]
|
||||
[assembly: ApplicationAccessControl(false)]
|
@@ -0,0 +1,35 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("EnterpriseServicesHostcs")]
|
||||
[assembly: AssemblyDescription("Enterprise Services host")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("ProjectTracker")]
|
||||
[assembly: AssemblyCopyright("Copyright © Rockford Lhotka 2006")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("0baa668e-9d03-48e3-860e-36628322b5ef")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="CslaAuthentication" value="Csla" />
|
||||
</appSettings>
|
||||
<connectionStrings>
|
||||
<add name="PTracker"
|
||||
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Visual Studio Projects\csla20\ProjectTracker20cs\PTracker.mdf";Integrated Security=True;User Instance=True"
|
||||
providerName="System.Data.SqlClient" />
|
||||
<add name="Security"
|
||||
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Visual Studio Projects\csla20\ProjectTracker20cs\Security.mdf";Integrated Security=True;User Instance=True"
|
||||
providerName="System.Data.SqlClient" />
|
||||
</connectionStrings>
|
||||
</configuration>
|
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
</assembly>
|
Binary file not shown.
@@ -0,0 +1,25 @@
|
||||
# Microsoft Developer Studio Project File - Database Project
|
||||
Begin DataProject = "PTData"
|
||||
MSDTVersion = "80"
|
||||
DefDBRef = "PTracker.mdf"
|
||||
Begin DBRefFolder = "Database References"
|
||||
Begin DBRefNode = "PTracker.mdf"
|
||||
ConnectStr = "Data Source=.\SQLEXPRESS;AttachDbFilename=""D:\Visual Studio Projects\csla20\ProjectTracker20vb\PTracker.mdf"";Integrated Security=True;Connect Timeout=30;User Instance=True"
|
||||
Provider = "{91510608-8809-4020-8897-FBA057E22D54}"
|
||||
Colorizer = 6
|
||||
End
|
||||
Begin DBRefNode = "Security.mdf"
|
||||
ConnectStr = "Data Source=.\SQLEXPRESS;AttachDbFilename=""D:\Visual Studio Projects\csla20\ProjectTracker20vb\Security.mdf"";Integrated Security=True;Connect Timeout=30;User Instance=True"
|
||||
Provider = "{91510608-8809-4020-8897-FBA057E22D54}"
|
||||
Colorizer = 6
|
||||
End
|
||||
End
|
||||
Begin Folder = "PTracker"
|
||||
Script = "StoredProcedures.SQL"
|
||||
Script = "Tables.SQL"
|
||||
End
|
||||
Begin Folder = "Security"
|
||||
Script = "StoredProcedures.SQL"
|
||||
Script = "Tables.SQL"
|
||||
End
|
||||
End
|
@@ -0,0 +1,997 @@
|
||||
/****** Object: StoredProcedure [dbo].[addAssignment] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[addAssignment]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[addAssignment]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[updateRole] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[updateRole]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[updateRole]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[addProject] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[addProject]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[addProject]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[addResource] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[addResource]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[addResource]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[addRole] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[addRole]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[addRole]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[deleteAssignment] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[deleteAssignment]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[deleteAssignment]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[deleteProject] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[deleteProject]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[deleteProject]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[deleteResource] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[deleteResource]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[deleteResource]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[deleteRole] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[deleteRole]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[deleteRole]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[existsProject] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[existsProject]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[existsProject]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[existsResource] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[existsResource]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[existsResource]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[getProject] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[getProject]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[getProject]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[getProjects] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[getProjects]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[getProjects]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[getResource] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[getResource]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[getResource]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[getResources] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[getResources]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[getResources]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[getRoles] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[getRoles]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[getRoles]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[updateAssignment] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[updateAssignment]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[updateAssignment]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[updateProject] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[updateProject]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[updateProject]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[updateResource] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[updateResource]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[updateResource]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[addAssignment] Script Date: 01/18/2006 09:28:48 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[addAssignment]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE addAssignment
|
||||
|
||||
(
|
||||
|
||||
@projectId uniqueidentifier,
|
||||
|
||||
@resourceId int,
|
||||
|
||||
@assigned datetime,
|
||||
|
||||
@role int,
|
||||
|
||||
@newLastChanged timestamp output
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
INSERT INTO Assignments
|
||||
|
||||
(ProjectId,ResourceId,Assigned,Role)
|
||||
|
||||
VALUES
|
||||
|
||||
(@projectId,@resourceId,@assigned,@role)
|
||||
|
||||
|
||||
|
||||
SELECT @newLastChanged = LastChanged
|
||||
|
||||
FROM Assignments
|
||||
|
||||
WHERE ProjectId=@projectId AND ResourceId=@resourceId
|
||||
|
||||
RETURN'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[updateRole] Script Date: 01/18/2006 09:28:49 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[updateRole]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[updateRole]
|
||||
|
||||
(
|
||||
|
||||
@id int,
|
||||
|
||||
@name varchar(50),
|
||||
|
||||
@lastChanged timestamp,
|
||||
|
||||
@newLastChanged timestamp output
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
UPDATE Roles
|
||||
|
||||
SET
|
||||
|
||||
Name=@name
|
||||
|
||||
WHERE Id=@id
|
||||
|
||||
AND LastChanged=@lastChanged
|
||||
|
||||
IF @@ROWCOUNT = 0
|
||||
|
||||
RAISERROR(''Row has been edited by another user'', 16, 1)
|
||||
|
||||
|
||||
SELECT @newLastChanged = LastChanged
|
||||
|
||||
FROM Roles WHERE Id=@id
|
||||
|
||||
RETURN'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[addProject] Script Date: 01/18/2006 09:28:49 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[addProject]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE addProject
|
||||
|
||||
(
|
||||
|
||||
@id uniqueidentifier,
|
||||
|
||||
@name varchar(50),
|
||||
|
||||
@started datetime,
|
||||
|
||||
@ended datetime,
|
||||
|
||||
@description varchar(MAX),
|
||||
|
||||
@newLastChanged timestamp output
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
INSERT INTO Projects
|
||||
|
||||
(Id,Name,Started,Ended,Description)
|
||||
|
||||
VALUES
|
||||
|
||||
(@id,@name,@started,@ended,@description)
|
||||
|
||||
|
||||
SELECT @newLastChanged = LastChanged
|
||||
|
||||
FROM Projects WHERE Id=@id
|
||||
|
||||
RETURN'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[addResource] Script Date: 01/18/2006 09:28:50 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[addResource]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE addResource
|
||||
|
||||
(
|
||||
|
||||
@lastName varchar(50),
|
||||
|
||||
@firstName varchar(50),
|
||||
|
||||
@newId int output,
|
||||
|
||||
@newLastChanged timestamp output
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
INSERT INTO Resources
|
||||
|
||||
(LastName,FirstName)
|
||||
|
||||
VALUES
|
||||
|
||||
(@lastName,@firstName)
|
||||
|
||||
|
||||
|
||||
SELECT @newId = Id, @newLastChanged = LastChanged
|
||||
|
||||
FROM Resources WHERE Id=SCOPE_IDENTITY()
|
||||
|
||||
RETURN'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[addRole] Script Date: 01/18/2006 09:28:51 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[addRole]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[addRole]
|
||||
|
||||
(
|
||||
|
||||
@id int,
|
||||
|
||||
@name varchar(50),
|
||||
|
||||
@newLastChanged timestamp output
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
INSERT INTO Roles
|
||||
|
||||
(Id,Name)
|
||||
|
||||
VALUES
|
||||
|
||||
(@id,@name)
|
||||
|
||||
|
||||
SELECT @newLastChanged = LastChanged
|
||||
|
||||
FROM Roles WHERE Id=@id
|
||||
|
||||
RETURN'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[deleteAssignment] Script Date: 01/18/2006 09:28:51 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[deleteAssignment]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE deleteAssignment
|
||||
|
||||
(
|
||||
|
||||
@projectId uniqueidentifier,
|
||||
|
||||
@resourceId int
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
DELETE Assignments
|
||||
|
||||
WHERE ProjectId=@projectId AND ResourceId=@resourceId
|
||||
|
||||
RETURN'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[deleteProject] Script Date: 01/18/2006 09:28:52 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[deleteProject]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE deleteProject
|
||||
|
||||
(
|
||||
|
||||
@id uniqueidentifier
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
DELETE Assignments
|
||||
|
||||
WHERE ProjectId=@id
|
||||
|
||||
|
||||
|
||||
DELETE Projects
|
||||
|
||||
WHERE Id=@id
|
||||
|
||||
RETURN'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[deleteResource] Script Date: 01/18/2006 09:28:52 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[deleteResource]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE deleteResource
|
||||
|
||||
(
|
||||
|
||||
@id int
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
DELETE Assignments
|
||||
|
||||
WHERE ResourceId=@id
|
||||
|
||||
|
||||
DELETE Resources
|
||||
|
||||
WHERE Id=@id
|
||||
|
||||
RETURN'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[deleteRole] Script Date: 01/18/2006 09:28:52 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[deleteRole]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[deleteRole]
|
||||
|
||||
(
|
||||
|
||||
@id int
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
DELETE Roles
|
||||
|
||||
WHERE Id=@id
|
||||
|
||||
RETURN'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[existsProject] Script Date: 01/18/2006 09:28:53 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[existsProject]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE dbo.existsProject
|
||||
|
||||
(
|
||||
|
||||
@id uniqueidentifier
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
SELECT COUNT(*)
|
||||
|
||||
FROM Projects WHERE Id=@id
|
||||
|
||||
RETURN
|
||||
|
||||
'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[existsResource] Script Date: 01/18/2006 09:28:53 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[existsResource]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE dbo.existsResource
|
||||
|
||||
(
|
||||
|
||||
@id int
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
SELECT COUNT(*)
|
||||
|
||||
FROM Resources WHERE Id=@id
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[getProject] Script Date: 01/18/2006 09:28:54 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[getProject]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE getProject
|
||||
|
||||
(
|
||||
|
||||
@id uniqueidentifier
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
SELECT Id,Name,Started,Ended,Description,LastChanged
|
||||
|
||||
FROM Projects
|
||||
|
||||
WHERE Id=@id
|
||||
|
||||
|
||||
SELECT ResourceId,LastName,FirstName,Assigned,Role,Assignments.LastChanged AS LastChanged
|
||||
|
||||
FROM Resources,Assignments
|
||||
|
||||
WHERE ProjectId=@id AND ResourceId=Id
|
||||
|
||||
RETURN'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[getProjects] Script Date: 01/18/2006 09:28:54 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[getProjects]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE getProjects
|
||||
|
||||
AS
|
||||
|
||||
SELECT Id, Name
|
||||
|
||||
FROM Projects
|
||||
|
||||
RETURN '
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[getResource] Script Date: 01/18/2006 09:28:54 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[getResource]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE getResource
|
||||
|
||||
(
|
||||
|
||||
@id int
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
SELECT Id,LastName,FirstName,LastChanged
|
||||
|
||||
FROM Resources
|
||||
|
||||
WHERE Id=@id
|
||||
|
||||
|
||||
SELECT ProjectId,Name,Assigned,Role,Assignments.LastChanged AS LastChanged
|
||||
|
||||
FROM Projects,Assignments
|
||||
|
||||
WHERE ResourceId=@id AND ProjectId=Id
|
||||
|
||||
RETURN'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[getResources] Script Date: 01/18/2006 09:28:55 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[getResources]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE getResources
|
||||
|
||||
AS
|
||||
|
||||
SELECT Id,LastName,FirstName
|
||||
|
||||
FROM Resources
|
||||
|
||||
RETURN'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[getRoles] Script Date: 01/18/2006 09:28:55 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[getRoles]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[getRoles]
|
||||
|
||||
AS
|
||||
|
||||
SELECT Id,Name,LastChanged
|
||||
|
||||
FROM Roles
|
||||
|
||||
RETURN '
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[updateAssignment] Script Date: 01/18/2006 09:28:55 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[updateAssignment]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE updateAssignment
|
||||
|
||||
(
|
||||
|
||||
@projectId uniqueidentifier,
|
||||
|
||||
@resourceId int,
|
||||
|
||||
@assigned datetime,
|
||||
|
||||
@role int,
|
||||
|
||||
@lastChanged timestamp,
|
||||
|
||||
@newLastChanged timestamp output
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
UPDATE Assignments
|
||||
|
||||
SET
|
||||
|
||||
Assigned=@assigned,
|
||||
|
||||
Role=@role
|
||||
|
||||
WHERE ProjectId=@projectId AND ResourceId=@resourceId
|
||||
|
||||
AND LastChanged=@lastChanged
|
||||
|
||||
IF @@ROWCOUNT = 0
|
||||
|
||||
RAISERROR(''Row has been edited by another user'', 16, 1)
|
||||
|
||||
|
||||
SELECT @newLastChanged = LastChanged
|
||||
|
||||
FROM Assignments
|
||||
|
||||
WHERE ProjectId=@projectId AND ResourceId=@resourceId
|
||||
|
||||
RETURN
|
||||
|
||||
'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[updateProject] Script Date: 01/18/2006 09:28:56 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[updateProject]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE updateProject
|
||||
|
||||
(
|
||||
|
||||
@id uniqueidentifier,
|
||||
|
||||
@name varchar(50),
|
||||
|
||||
@started datetime,
|
||||
|
||||
@ended datetime,
|
||||
|
||||
@description varchar(MAX),
|
||||
|
||||
@lastChanged timestamp,
|
||||
|
||||
@newLastChanged timestamp output
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
UPDATE Projects
|
||||
|
||||
SET
|
||||
|
||||
Name=@name,
|
||||
|
||||
Started=@started,
|
||||
|
||||
Ended=@ended,
|
||||
|
||||
Description=@description
|
||||
|
||||
WHERE Id=@id
|
||||
|
||||
AND LastChanged=@lastChanged
|
||||
|
||||
IF @@ROWCOUNT = 0
|
||||
|
||||
RAISERROR(''Row has been edited by another user'', 16, 1)
|
||||
|
||||
|
||||
SELECT @newLastChanged = LastChanged
|
||||
|
||||
FROM Projects WHERE Id=@id
|
||||
|
||||
RETURN
|
||||
|
||||
'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[updateResource] Script Date: 01/18/2006 09:28:57 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[updateResource]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE updateResource
|
||||
|
||||
(
|
||||
|
||||
@id int,
|
||||
|
||||
@lastName varchar(50),
|
||||
|
||||
@firstName varchar(50),
|
||||
|
||||
@lastChanged timestamp,
|
||||
|
||||
@newLastChanged timestamp output
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
UPDATE Resources
|
||||
|
||||
SET
|
||||
|
||||
LastName=@lastName,
|
||||
|
||||
FirstName=@firstName
|
||||
|
||||
WHERE Id=@id
|
||||
|
||||
AND LastChanged=@lastChanged
|
||||
|
||||
IF @@ROWCOUNT = 0
|
||||
|
||||
RAISERROR(''Row has been edited by another user'', 16, 1)
|
||||
|
||||
|
||||
|
||||
SELECT @newLastChanged = LastChanged
|
||||
|
||||
FROM Resources WHERE Id=@id
|
||||
|
||||
RETURN'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
@@ -0,0 +1,256 @@
|
||||
IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Assignments_Projects]') AND parent_object_id = OBJECT_ID(N'[dbo].[Assignments]'))
|
||||
|
||||
ALTER TABLE [dbo].[Assignments] DROP CONSTRAINT [FK_Assignments_Projects]
|
||||
|
||||
GO
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Assignments_Resources]') AND parent_object_id = OBJECT_ID(N'[dbo].[Assignments]'))
|
||||
|
||||
ALTER TABLE [dbo].[Assignments] DROP CONSTRAINT [FK_Assignments_Resources]
|
||||
|
||||
GO
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Assignments_Roles]') AND parent_object_id = OBJECT_ID(N'[dbo].[Assignments]'))
|
||||
|
||||
ALTER TABLE [dbo].[Assignments] DROP CONSTRAINT [FK_Assignments_Roles]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: Table [dbo].[Assignments] Script Date: 12/06/2005 11:11:16 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Assignments]') AND type in (N'U'))
|
||||
|
||||
DROP TABLE [dbo].[Assignments]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: Table [dbo].[Roles] Script Date: 12/06/2005 11:11:16 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Roles]') AND type in (N'U'))
|
||||
|
||||
DROP TABLE [dbo].[Roles]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: Table [dbo].[Projects] Script Date: 12/06/2005 11:11:16 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Projects]') AND type in (N'U'))
|
||||
|
||||
DROP TABLE [dbo].[Projects]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: Table [dbo].[Resources] Script Date: 12/06/2005 11:11:16 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Resources]') AND type in (N'U'))
|
||||
|
||||
DROP TABLE [dbo].[Resources]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: Table [dbo].[Assignments] Script Date: 12/06/2005 11:11:16 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Assignments]') AND type in (N'U'))
|
||||
|
||||
BEGIN
|
||||
|
||||
CREATE TABLE [dbo].[Assignments](
|
||||
|
||||
[ProjectId] [uniqueidentifier] NOT NULL,
|
||||
|
||||
[ResourceId] [int] NOT NULL,
|
||||
|
||||
[Assigned] [datetime] NOT NULL,
|
||||
|
||||
[Role] [int] NOT NULL,
|
||||
|
||||
[LastChanged] [timestamp] NOT NULL,
|
||||
|
||||
CONSTRAINT [PK_Assignments] PRIMARY KEY CLUSTERED
|
||||
|
||||
(
|
||||
|
||||
[ProjectId] ASC,
|
||||
|
||||
[ResourceId] ASC
|
||||
|
||||
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: Table [dbo].[Roles] Script Date: 12/06/2005 11:11:16 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
SET ANSI_PADDING ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Roles]') AND type in (N'U'))
|
||||
|
||||
BEGIN
|
||||
|
||||
CREATE TABLE [dbo].[Roles](
|
||||
|
||||
[Id] [int] NOT NULL,
|
||||
|
||||
[Name] [varchar](50) NOT NULL,
|
||||
|
||||
[LastChanged] [timestamp] NOT NULL,
|
||||
|
||||
CONSTRAINT [PK_Roles] PRIMARY KEY CLUSTERED
|
||||
|
||||
(
|
||||
|
||||
[Id] ASC
|
||||
|
||||
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
SET ANSI_PADDING OFF
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: Table [dbo].[Projects] Script Date: 12/06/2005 11:11:16 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
SET ANSI_PADDING ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Projects]') AND type in (N'U'))
|
||||
|
||||
BEGIN
|
||||
|
||||
CREATE TABLE [dbo].[Projects](
|
||||
|
||||
[Id] [uniqueidentifier] NOT NULL,
|
||||
|
||||
[Name] [varchar](50) NOT NULL,
|
||||
|
||||
[Started] [datetime] NULL,
|
||||
|
||||
[Ended] [datetime] NULL,
|
||||
|
||||
[Description] [varchar](max) NULL,
|
||||
|
||||
[LastChanged] [timestamp] NOT NULL,
|
||||
|
||||
CONSTRAINT [PK_Projects] PRIMARY KEY CLUSTERED
|
||||
|
||||
(
|
||||
|
||||
[Id] ASC
|
||||
|
||||
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
SET ANSI_PADDING OFF
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: Table [dbo].[Resources] Script Date: 12/06/2005 11:11:16 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
SET ANSI_PADDING ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Resources]') AND type in (N'U'))
|
||||
|
||||
BEGIN
|
||||
|
||||
CREATE TABLE [dbo].[Resources](
|
||||
|
||||
[Id] [int] IDENTITY(1,1) NOT NULL,
|
||||
|
||||
[LastName] [varchar](50) NULL,
|
||||
|
||||
[FirstName] [varchar](50) NULL,
|
||||
|
||||
[LastChanged] [timestamp] NOT NULL,
|
||||
|
||||
CONSTRAINT [PK_Resources] PRIMARY KEY CLUSTERED
|
||||
|
||||
(
|
||||
|
||||
[Id] ASC
|
||||
|
||||
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
SET ANSI_PADDING OFF
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Assignments_Projects]') AND parent_object_id = OBJECT_ID(N'[dbo].[Assignments]'))
|
||||
|
||||
ALTER TABLE [dbo].[Assignments] WITH CHECK ADD CONSTRAINT [FK_Assignments_Projects] FOREIGN KEY([ProjectId])
|
||||
|
||||
REFERENCES [dbo].[Projects] ([Id])
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Assignments_Resources]') AND parent_object_id = OBJECT_ID(N'[dbo].[Assignments]'))
|
||||
|
||||
ALTER TABLE [dbo].[Assignments] WITH CHECK ADD CONSTRAINT [FK_Assignments_Resources] FOREIGN KEY([ResourceId])
|
||||
|
||||
REFERENCES [dbo].[Resources] ([Id])
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Assignments_Roles]') AND parent_object_id = OBJECT_ID(N'[dbo].[Assignments]'))
|
||||
|
||||
ALTER TABLE [dbo].[Assignments] WITH CHECK ADD CONSTRAINT [FK_Assignments_Roles] FOREIGN KEY([Role])
|
||||
|
||||
REFERENCES [dbo].[Roles] ([Id])
|
||||
|
||||
GO
|
||||
|
@@ -0,0 +1,56 @@
|
||||
/****** Object: StoredProcedure [dbo].[Login] Script Date: 12/06/2005 11:21:14 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Login]') AND type in (N'P', N'PC'))
|
||||
|
||||
DROP PROCEDURE [dbo].[Login]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[Login] Script Date: 12/06/2005 11:21:14 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Login]') AND type in (N'P', N'PC'))
|
||||
|
||||
BEGIN
|
||||
|
||||
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE Login
|
||||
|
||||
(
|
||||
|
||||
@user varchar(20),
|
||||
|
||||
@pw varchar(20)
|
||||
|
||||
)
|
||||
|
||||
AS
|
||||
|
||||
SELECT Username
|
||||
|
||||
FROM Users
|
||||
|
||||
WHERE Username=@user AND Password=@pw;
|
||||
|
||||
|
||||
|
||||
SELECT R.Role
|
||||
|
||||
FROM Users AS U INNER JOIN Roles AS R ON
|
||||
|
||||
R.UserName = U.UserName
|
||||
|
||||
WHERE U.Username = @user and U.Password = @pw
|
||||
|
||||
RETURN'
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
@@ -0,0 +1,116 @@
|
||||
IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Roles_Users]') AND parent_object_id = OBJECT_ID(N'[dbo].[Roles]'))
|
||||
|
||||
ALTER TABLE [dbo].[Roles] DROP CONSTRAINT [FK_Roles_Users]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: Table [dbo].[Roles] Script Date: 12/06/2005 11:21:00 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Roles]') AND type in (N'U'))
|
||||
|
||||
DROP TABLE [dbo].[Roles]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: Table [dbo].[Users] Script Date: 12/06/2005 11:21:00 ******/
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Users]') AND type in (N'U'))
|
||||
|
||||
DROP TABLE [dbo].[Users]
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: Table [dbo].[Roles] Script Date: 12/06/2005 11:21:00 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
SET ANSI_PADDING ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Roles]') AND type in (N'U'))
|
||||
|
||||
BEGIN
|
||||
|
||||
CREATE TABLE [dbo].[Roles](
|
||||
|
||||
[Username] [varchar](20) NOT NULL,
|
||||
|
||||
[Role] [varchar](20) NOT NULL,
|
||||
|
||||
CONSTRAINT [PK_Roles] PRIMARY KEY CLUSTERED
|
||||
|
||||
(
|
||||
|
||||
[Username] ASC,
|
||||
|
||||
[Role] ASC
|
||||
|
||||
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
SET ANSI_PADDING OFF
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: Table [dbo].[Users] Script Date: 12/06/2005 11:21:00 ******/
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
GO
|
||||
|
||||
SET ANSI_PADDING ON
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Users]') AND type in (N'U'))
|
||||
|
||||
BEGIN
|
||||
|
||||
CREATE TABLE [dbo].[Users](
|
||||
|
||||
[Username] [varchar](20) NOT NULL,
|
||||
|
||||
[Password] [varchar](20) NULL,
|
||||
|
||||
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED
|
||||
|
||||
(
|
||||
|
||||
[Username] ASC
|
||||
|
||||
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
SET ANSI_PADDING OFF
|
||||
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Roles_Users]') AND parent_object_id = OBJECT_ID(N'[dbo].[Roles]'))
|
||||
|
||||
ALTER TABLE [dbo].[Roles] WITH CHECK ADD CONSTRAINT [FK_Roles_Users] FOREIGN KEY([Username])
|
||||
|
||||
REFERENCES [dbo].[Users] ([Username])
|
||||
|
||||
GO
|
||||
|
667
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTServiceClient/MainForm.Designer.cs
generated
Normal file
667
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTServiceClient/MainForm.Designer.cs
generated
Normal file
@@ -0,0 +1,667 @@
|
||||
namespace PTServiceClient
|
||||
{
|
||||
partial class MainForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.Windows.Forms.Label DescriptionLabel;
|
||||
System.Windows.Forms.Label EndedLabel;
|
||||
System.Windows.Forms.Label StartedLabel;
|
||||
System.Windows.Forms.Label NameLabel;
|
||||
System.Windows.Forms.Label IdLabel;
|
||||
System.Windows.Forms.Label NameLabel3;
|
||||
System.Windows.Forms.Label IdLabel4;
|
||||
System.Windows.Forms.Label NameLabel1;
|
||||
System.Windows.Forms.Label IdLabel2;
|
||||
this.Label3 = new System.Windows.Forms.Label();
|
||||
this.Label2 = new System.Windows.Forms.Label();
|
||||
this.Label1 = new System.Windows.Forms.Label();
|
||||
this.Label5 = new System.Windows.Forms.Label();
|
||||
this.Label4 = new System.Windows.Forms.Label();
|
||||
this.NameLabel2 = new System.Windows.Forms.Label();
|
||||
this.ProjectDataBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.AssignToProjectButton = new System.Windows.Forms.Button();
|
||||
this.NameLabel4 = new System.Windows.Forms.Label();
|
||||
this.ResourceDataBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.GroupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.ProjectResourcesDataGridView = new System.Windows.Forms.DataGridView();
|
||||
this.RoleDataBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.ProjectResourcesBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.ProjectDetailBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.ClearProjectButton = new System.Windows.Forms.Button();
|
||||
this.SaveProjectButton = new System.Windows.Forms.Button();
|
||||
this.DescriptionTextBox = new System.Windows.Forms.TextBox();
|
||||
this.EndedTextBox = new System.Windows.Forms.TextBox();
|
||||
this.StartedTextBox = new System.Windows.Forms.TextBox();
|
||||
this.NameTextBox = new System.Windows.Forms.TextBox();
|
||||
this.IdLabel1 = new System.Windows.Forms.Label();
|
||||
this.ResourceIdLabel = new System.Windows.Forms.Label();
|
||||
this.ProjectIdLabel = new System.Windows.Forms.Label();
|
||||
this.GroupBox2 = new System.Windows.Forms.GroupBox();
|
||||
this.RoleInfoDataGridView = new System.Windows.Forms.DataGridView();
|
||||
this.idDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.nameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ProjectDataDataGridView = new System.Windows.Forms.DataGridView();
|
||||
this.DataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.DataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ResourceDataDataGridView = new System.Windows.Forms.DataGridView();
|
||||
this.DataGridViewTextBoxColumn6 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.DataGridViewTextBoxColumn7 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.usernameTextBox = new System.Windows.Forms.TextBox();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.passwordTextBox = new System.Windows.Forms.TextBox();
|
||||
this.DataGridViewTextBoxColumn4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.DataGridViewTextBoxColumn3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.DataGridViewTextBoxColumn5 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.DataGridViewTextBoxColumn10 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.DataGridViewTextBoxColumn11 = new System.Windows.Forms.DataGridViewComboBoxColumn();
|
||||
DescriptionLabel = new System.Windows.Forms.Label();
|
||||
EndedLabel = new System.Windows.Forms.Label();
|
||||
StartedLabel = new System.Windows.Forms.Label();
|
||||
NameLabel = new System.Windows.Forms.Label();
|
||||
IdLabel = new System.Windows.Forms.Label();
|
||||
NameLabel3 = new System.Windows.Forms.Label();
|
||||
IdLabel4 = new System.Windows.Forms.Label();
|
||||
NameLabel1 = new System.Windows.Forms.Label();
|
||||
IdLabel2 = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ProjectDataBindingSource)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ResourceDataBindingSource)).BeginInit();
|
||||
this.GroupBox1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ProjectResourcesDataGridView)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.RoleDataBindingSource)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ProjectResourcesBindingSource)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ProjectDetailBindingSource)).BeginInit();
|
||||
this.GroupBox2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.RoleInfoDataGridView)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ProjectDataDataGridView)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ResourceDataDataGridView)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// DescriptionLabel
|
||||
//
|
||||
DescriptionLabel.AutoSize = true;
|
||||
DescriptionLabel.Location = new System.Drawing.Point(7, 148);
|
||||
DescriptionLabel.Name = "DescriptionLabel";
|
||||
DescriptionLabel.Size = new System.Drawing.Size(63, 13);
|
||||
DescriptionLabel.TabIndex = 8;
|
||||
DescriptionLabel.Text = "Description:";
|
||||
//
|
||||
// EndedLabel
|
||||
//
|
||||
EndedLabel.AutoSize = true;
|
||||
EndedLabel.Location = new System.Drawing.Point(7, 117);
|
||||
EndedLabel.Name = "EndedLabel";
|
||||
EndedLabel.Size = new System.Drawing.Size(41, 13);
|
||||
EndedLabel.TabIndex = 6;
|
||||
EndedLabel.Text = "Ended:";
|
||||
//
|
||||
// StartedLabel
|
||||
//
|
||||
StartedLabel.AutoSize = true;
|
||||
StartedLabel.Location = new System.Drawing.Point(7, 88);
|
||||
StartedLabel.Name = "StartedLabel";
|
||||
StartedLabel.Size = new System.Drawing.Size(44, 13);
|
||||
StartedLabel.TabIndex = 4;
|
||||
StartedLabel.Text = "Started:";
|
||||
//
|
||||
// NameLabel
|
||||
//
|
||||
NameLabel.AutoSize = true;
|
||||
NameLabel.Location = new System.Drawing.Point(7, 59);
|
||||
NameLabel.Name = "NameLabel";
|
||||
NameLabel.Size = new System.Drawing.Size(38, 13);
|
||||
NameLabel.TabIndex = 2;
|
||||
NameLabel.Text = "Name:";
|
||||
//
|
||||
// IdLabel
|
||||
//
|
||||
IdLabel.AutoSize = true;
|
||||
IdLabel.Location = new System.Drawing.Point(7, 30);
|
||||
IdLabel.Name = "IdLabel";
|
||||
IdLabel.Size = new System.Drawing.Size(19, 13);
|
||||
IdLabel.TabIndex = 0;
|
||||
IdLabel.Text = "Id:";
|
||||
//
|
||||
// NameLabel3
|
||||
//
|
||||
NameLabel3.AutoSize = true;
|
||||
NameLabel3.Location = new System.Drawing.Point(9, 153);
|
||||
NameLabel3.Name = "NameLabel3";
|
||||
NameLabel3.Size = new System.Drawing.Size(38, 13);
|
||||
NameLabel3.TabIndex = 7;
|
||||
NameLabel3.Text = "Name:";
|
||||
//
|
||||
// IdLabel4
|
||||
//
|
||||
IdLabel4.AutoSize = true;
|
||||
IdLabel4.Location = new System.Drawing.Point(9, 130);
|
||||
IdLabel4.Name = "IdLabel4";
|
||||
IdLabel4.Size = new System.Drawing.Size(19, 13);
|
||||
IdLabel4.TabIndex = 5;
|
||||
IdLabel4.Text = "Id:";
|
||||
//
|
||||
// NameLabel1
|
||||
//
|
||||
NameLabel1.AutoSize = true;
|
||||
NameLabel1.Location = new System.Drawing.Point(7, 68);
|
||||
NameLabel1.Name = "NameLabel1";
|
||||
NameLabel1.Size = new System.Drawing.Size(38, 13);
|
||||
NameLabel1.TabIndex = 2;
|
||||
NameLabel1.Text = "Name:";
|
||||
//
|
||||
// IdLabel2
|
||||
//
|
||||
IdLabel2.AutoSize = true;
|
||||
IdLabel2.Location = new System.Drawing.Point(9, 44);
|
||||
IdLabel2.Name = "IdLabel2";
|
||||
IdLabel2.Size = new System.Drawing.Size(19, 13);
|
||||
IdLabel2.TabIndex = 0;
|
||||
IdLabel2.Text = "Id:";
|
||||
//
|
||||
// Label3
|
||||
//
|
||||
this.Label3.AutoSize = true;
|
||||
this.Label3.Location = new System.Drawing.Point(596, 93);
|
||||
this.Label3.Name = "Label3";
|
||||
this.Label3.Size = new System.Drawing.Size(34, 13);
|
||||
this.Label3.TabIndex = 13;
|
||||
this.Label3.Text = "Roles";
|
||||
//
|
||||
// Label2
|
||||
//
|
||||
this.Label2.AutoSize = true;
|
||||
this.Label2.Location = new System.Drawing.Point(293, 93);
|
||||
this.Label2.Name = "Label2";
|
||||
this.Label2.Size = new System.Drawing.Size(204, 13);
|
||||
this.Label2.TabIndex = 12;
|
||||
this.Label2.Text = "Resources (double-click to change name)";
|
||||
//
|
||||
// Label1
|
||||
//
|
||||
this.Label1.AutoSize = true;
|
||||
this.Label1.Location = new System.Drawing.Point(10, 93);
|
||||
this.Label1.Name = "Label1";
|
||||
this.Label1.Size = new System.Drawing.Size(45, 13);
|
||||
this.Label1.TabIndex = 11;
|
||||
this.Label1.Text = "Projects";
|
||||
//
|
||||
// Label5
|
||||
//
|
||||
this.Label5.AutoSize = true;
|
||||
this.Label5.Location = new System.Drawing.Point(9, 109);
|
||||
this.Label5.Name = "Label5";
|
||||
this.Label5.Size = new System.Drawing.Size(56, 13);
|
||||
this.Label5.TabIndex = 4;
|
||||
this.Label5.Text = "Resource:";
|
||||
//
|
||||
// Label4
|
||||
//
|
||||
this.Label4.AutoSize = true;
|
||||
this.Label4.Location = new System.Drawing.Point(9, 25);
|
||||
this.Label4.Name = "Label4";
|
||||
this.Label4.Size = new System.Drawing.Size(43, 13);
|
||||
this.Label4.TabIndex = 4;
|
||||
this.Label4.Text = "Project:";
|
||||
//
|
||||
// NameLabel2
|
||||
//
|
||||
this.NameLabel2.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.ProjectDataBindingSource, "Name", true));
|
||||
this.NameLabel2.Location = new System.Drawing.Point(53, 68);
|
||||
this.NameLabel2.Name = "NameLabel2";
|
||||
this.NameLabel2.Size = new System.Drawing.Size(227, 23);
|
||||
this.NameLabel2.TabIndex = 3;
|
||||
//
|
||||
// ProjectDataBindingSource
|
||||
//
|
||||
this.ProjectDataBindingSource.DataSource = typeof(PTServiceClient.PTService.ProjectData);
|
||||
//
|
||||
// AssignToProjectButton
|
||||
//
|
||||
this.AssignToProjectButton.Location = new System.Drawing.Point(196, 205);
|
||||
this.AssignToProjectButton.Name = "AssignToProjectButton";
|
||||
this.AssignToProjectButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.AssignToProjectButton.TabIndex = 9;
|
||||
this.AssignToProjectButton.Text = "Assign";
|
||||
this.AssignToProjectButton.UseVisualStyleBackColor = true;
|
||||
this.AssignToProjectButton.Click += new System.EventHandler(this.AssignToProjectButton_Click);
|
||||
//
|
||||
// NameLabel4
|
||||
//
|
||||
this.NameLabel4.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.ResourceDataBindingSource, "Name", true));
|
||||
this.NameLabel4.Location = new System.Drawing.Point(53, 153);
|
||||
this.NameLabel4.Name = "NameLabel4";
|
||||
this.NameLabel4.Size = new System.Drawing.Size(218, 23);
|
||||
this.NameLabel4.TabIndex = 8;
|
||||
//
|
||||
// ResourceDataBindingSource
|
||||
//
|
||||
this.ResourceDataBindingSource.DataSource = typeof(PTServiceClient.PTService.ResourceData);
|
||||
//
|
||||
// GroupBox1
|
||||
//
|
||||
this.GroupBox1.Controls.Add(this.ProjectResourcesDataGridView);
|
||||
this.GroupBox1.Controls.Add(this.ClearProjectButton);
|
||||
this.GroupBox1.Controls.Add(this.SaveProjectButton);
|
||||
this.GroupBox1.Controls.Add(DescriptionLabel);
|
||||
this.GroupBox1.Controls.Add(this.DescriptionTextBox);
|
||||
this.GroupBox1.Controls.Add(EndedLabel);
|
||||
this.GroupBox1.Controls.Add(this.EndedTextBox);
|
||||
this.GroupBox1.Controls.Add(StartedLabel);
|
||||
this.GroupBox1.Controls.Add(this.StartedTextBox);
|
||||
this.GroupBox1.Controls.Add(NameLabel);
|
||||
this.GroupBox1.Controls.Add(this.NameTextBox);
|
||||
this.GroupBox1.Controls.Add(IdLabel);
|
||||
this.GroupBox1.Controls.Add(this.IdLabel1);
|
||||
this.GroupBox1.Location = new System.Drawing.Point(10, 335);
|
||||
this.GroupBox1.Name = "GroupBox1";
|
||||
this.GroupBox1.Size = new System.Drawing.Size(583, 282);
|
||||
this.GroupBox1.TabIndex = 14;
|
||||
this.GroupBox1.TabStop = false;
|
||||
this.GroupBox1.Text = "Project";
|
||||
//
|
||||
// ProjectResourcesDataGridView
|
||||
//
|
||||
this.ProjectResourcesDataGridView.AllowUserToAddRows = false;
|
||||
this.ProjectResourcesDataGridView.AllowUserToDeleteRows = false;
|
||||
this.ProjectResourcesDataGridView.AutoGenerateColumns = false;
|
||||
this.ProjectResourcesDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.DataGridViewTextBoxColumn4,
|
||||
this.DataGridViewTextBoxColumn3,
|
||||
this.DataGridViewTextBoxColumn5,
|
||||
this.DataGridViewTextBoxColumn10,
|
||||
this.DataGridViewTextBoxColumn11});
|
||||
this.ProjectResourcesDataGridView.DataSource = this.ProjectResourcesBindingSource;
|
||||
this.ProjectResourcesDataGridView.Location = new System.Drawing.Point(257, 56);
|
||||
this.ProjectResourcesDataGridView.MultiSelect = false;
|
||||
this.ProjectResourcesDataGridView.Name = "ProjectResourcesDataGridView";
|
||||
this.ProjectResourcesDataGridView.ReadOnly = true;
|
||||
this.ProjectResourcesDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.ProjectResourcesDataGridView.Size = new System.Drawing.Size(313, 220);
|
||||
this.ProjectResourcesDataGridView.TabIndex = 12;
|
||||
//
|
||||
// RoleDataBindingSource
|
||||
//
|
||||
this.RoleDataBindingSource.DataSource = typeof(PTServiceClient.PTService.RoleInfo);
|
||||
//
|
||||
// ProjectResourcesBindingSource
|
||||
//
|
||||
this.ProjectResourcesBindingSource.DataMember = "ProjectResources";
|
||||
this.ProjectResourcesBindingSource.DataSource = this.ProjectDetailBindingSource;
|
||||
//
|
||||
// ProjectDetailBindingSource
|
||||
//
|
||||
this.ProjectDetailBindingSource.DataSource = typeof(PTServiceClient.PTService.ProjectData);
|
||||
//
|
||||
// ClearProjectButton
|
||||
//
|
||||
this.ClearProjectButton.Location = new System.Drawing.Point(95, 253);
|
||||
this.ClearProjectButton.Name = "ClearProjectButton";
|
||||
this.ClearProjectButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.ClearProjectButton.TabIndex = 11;
|
||||
this.ClearProjectButton.Text = "Clear";
|
||||
this.ClearProjectButton.UseVisualStyleBackColor = true;
|
||||
this.ClearProjectButton.Click += new System.EventHandler(this.ClearProjectButton_Click);
|
||||
//
|
||||
// SaveProjectButton
|
||||
//
|
||||
this.SaveProjectButton.Location = new System.Drawing.Point(176, 253);
|
||||
this.SaveProjectButton.Name = "SaveProjectButton";
|
||||
this.SaveProjectButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.SaveProjectButton.TabIndex = 10;
|
||||
this.SaveProjectButton.Text = "Save";
|
||||
this.SaveProjectButton.UseVisualStyleBackColor = true;
|
||||
this.SaveProjectButton.Click += new System.EventHandler(this.SaveProjectButton_Click);
|
||||
//
|
||||
// DescriptionTextBox
|
||||
//
|
||||
this.DescriptionTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.ProjectDetailBindingSource, "Description", true));
|
||||
this.DescriptionTextBox.Location = new System.Drawing.Point(76, 145);
|
||||
this.DescriptionTextBox.Multiline = true;
|
||||
this.DescriptionTextBox.Name = "DescriptionTextBox";
|
||||
this.DescriptionTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||
this.DescriptionTextBox.Size = new System.Drawing.Size(175, 102);
|
||||
this.DescriptionTextBox.TabIndex = 9;
|
||||
//
|
||||
// EndedTextBox
|
||||
//
|
||||
this.EndedTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.ProjectDetailBindingSource, "Ended", true));
|
||||
this.EndedTextBox.Location = new System.Drawing.Point(76, 114);
|
||||
this.EndedTextBox.Name = "EndedTextBox";
|
||||
this.EndedTextBox.Size = new System.Drawing.Size(175, 20);
|
||||
this.EndedTextBox.TabIndex = 7;
|
||||
//
|
||||
// StartedTextBox
|
||||
//
|
||||
this.StartedTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.ProjectDetailBindingSource, "Started", true));
|
||||
this.StartedTextBox.Location = new System.Drawing.Point(76, 85);
|
||||
this.StartedTextBox.Name = "StartedTextBox";
|
||||
this.StartedTextBox.Size = new System.Drawing.Size(175, 20);
|
||||
this.StartedTextBox.TabIndex = 5;
|
||||
//
|
||||
// NameTextBox
|
||||
//
|
||||
this.NameTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.ProjectDetailBindingSource, "Name", true));
|
||||
this.NameTextBox.Location = new System.Drawing.Point(76, 56);
|
||||
this.NameTextBox.Name = "NameTextBox";
|
||||
this.NameTextBox.Size = new System.Drawing.Size(175, 20);
|
||||
this.NameTextBox.TabIndex = 3;
|
||||
//
|
||||
// IdLabel1
|
||||
//
|
||||
this.IdLabel1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.ProjectDetailBindingSource, "Id", true));
|
||||
this.IdLabel1.Location = new System.Drawing.Point(73, 30);
|
||||
this.IdLabel1.Name = "IdLabel1";
|
||||
this.IdLabel1.Size = new System.Drawing.Size(175, 23);
|
||||
this.IdLabel1.TabIndex = 1;
|
||||
//
|
||||
// ResourceIdLabel
|
||||
//
|
||||
this.ResourceIdLabel.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.ResourceDataBindingSource, "Id", true));
|
||||
this.ResourceIdLabel.Location = new System.Drawing.Point(53, 130);
|
||||
this.ResourceIdLabel.Name = "ResourceIdLabel";
|
||||
this.ResourceIdLabel.Size = new System.Drawing.Size(218, 23);
|
||||
this.ResourceIdLabel.TabIndex = 6;
|
||||
//
|
||||
// ProjectIdLabel
|
||||
//
|
||||
this.ProjectIdLabel.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.ProjectDataBindingSource, "Id", true));
|
||||
this.ProjectIdLabel.Location = new System.Drawing.Point(53, 44);
|
||||
this.ProjectIdLabel.Name = "ProjectIdLabel";
|
||||
this.ProjectIdLabel.Size = new System.Drawing.Size(227, 23);
|
||||
this.ProjectIdLabel.TabIndex = 1;
|
||||
//
|
||||
// GroupBox2
|
||||
//
|
||||
this.GroupBox2.Controls.Add(this.AssignToProjectButton);
|
||||
this.GroupBox2.Controls.Add(NameLabel3);
|
||||
this.GroupBox2.Controls.Add(this.NameLabel4);
|
||||
this.GroupBox2.Controls.Add(IdLabel4);
|
||||
this.GroupBox2.Controls.Add(this.ResourceIdLabel);
|
||||
this.GroupBox2.Controls.Add(this.Label5);
|
||||
this.GroupBox2.Controls.Add(this.Label4);
|
||||
this.GroupBox2.Controls.Add(NameLabel1);
|
||||
this.GroupBox2.Controls.Add(this.NameLabel2);
|
||||
this.GroupBox2.Controls.Add(IdLabel2);
|
||||
this.GroupBox2.Controls.Add(this.ProjectIdLabel);
|
||||
this.GroupBox2.Location = new System.Drawing.Point(600, 335);
|
||||
this.GroupBox2.Name = "GroupBox2";
|
||||
this.GroupBox2.Size = new System.Drawing.Size(300, 282);
|
||||
this.GroupBox2.TabIndex = 15;
|
||||
this.GroupBox2.TabStop = false;
|
||||
this.GroupBox2.Text = "Add assignment";
|
||||
//
|
||||
// RoleInfoDataGridView
|
||||
//
|
||||
this.RoleInfoDataGridView.AutoGenerateColumns = false;
|
||||
this.RoleInfoDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.idDataGridViewTextBoxColumn,
|
||||
this.nameDataGridViewTextBoxColumn});
|
||||
this.RoleInfoDataGridView.DataSource = this.RoleDataBindingSource;
|
||||
this.RoleInfoDataGridView.Location = new System.Drawing.Point(599, 109);
|
||||
this.RoleInfoDataGridView.MultiSelect = false;
|
||||
this.RoleInfoDataGridView.Name = "RoleInfoDataGridView";
|
||||
this.RoleInfoDataGridView.ReadOnly = true;
|
||||
this.RoleInfoDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.RoleInfoDataGridView.Size = new System.Drawing.Size(300, 220);
|
||||
this.RoleInfoDataGridView.TabIndex = 10;
|
||||
//
|
||||
// idDataGridViewTextBoxColumn
|
||||
//
|
||||
this.idDataGridViewTextBoxColumn.DataPropertyName = "Id";
|
||||
this.idDataGridViewTextBoxColumn.HeaderText = "Id";
|
||||
this.idDataGridViewTextBoxColumn.Name = "idDataGridViewTextBoxColumn";
|
||||
this.idDataGridViewTextBoxColumn.ReadOnly = true;
|
||||
//
|
||||
// nameDataGridViewTextBoxColumn
|
||||
//
|
||||
this.nameDataGridViewTextBoxColumn.DataPropertyName = "Name";
|
||||
this.nameDataGridViewTextBoxColumn.HeaderText = "Name";
|
||||
this.nameDataGridViewTextBoxColumn.Name = "nameDataGridViewTextBoxColumn";
|
||||
this.nameDataGridViewTextBoxColumn.ReadOnly = true;
|
||||
//
|
||||
// ProjectDataDataGridView
|
||||
//
|
||||
this.ProjectDataDataGridView.AutoGenerateColumns = false;
|
||||
this.ProjectDataDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.DataGridViewTextBoxColumn1,
|
||||
this.DataGridViewTextBoxColumn2});
|
||||
this.ProjectDataDataGridView.DataSource = this.ProjectDataBindingSource;
|
||||
this.ProjectDataDataGridView.Location = new System.Drawing.Point(10, 109);
|
||||
this.ProjectDataDataGridView.MultiSelect = false;
|
||||
this.ProjectDataDataGridView.Name = "ProjectDataDataGridView";
|
||||
this.ProjectDataDataGridView.ReadOnly = true;
|
||||
this.ProjectDataDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.ProjectDataDataGridView.Size = new System.Drawing.Size(277, 220);
|
||||
this.ProjectDataDataGridView.TabIndex = 8;
|
||||
this.ProjectDataDataGridView.SelectionChanged += new System.EventHandler(this.ProjectDataDataGridView_SelectionChanged);
|
||||
//
|
||||
// DataGridViewTextBoxColumn1
|
||||
//
|
||||
this.DataGridViewTextBoxColumn1.DataPropertyName = "Id";
|
||||
this.DataGridViewTextBoxColumn1.HeaderText = "Id";
|
||||
this.DataGridViewTextBoxColumn1.Name = "DataGridViewTextBoxColumn1";
|
||||
this.DataGridViewTextBoxColumn1.ReadOnly = true;
|
||||
//
|
||||
// DataGridViewTextBoxColumn2
|
||||
//
|
||||
this.DataGridViewTextBoxColumn2.DataPropertyName = "Name";
|
||||
this.DataGridViewTextBoxColumn2.HeaderText = "Name";
|
||||
this.DataGridViewTextBoxColumn2.Name = "DataGridViewTextBoxColumn2";
|
||||
this.DataGridViewTextBoxColumn2.ReadOnly = true;
|
||||
//
|
||||
// ResourceDataDataGridView
|
||||
//
|
||||
this.ResourceDataDataGridView.AutoGenerateColumns = false;
|
||||
this.ResourceDataDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.DataGridViewTextBoxColumn6,
|
||||
this.DataGridViewTextBoxColumn7});
|
||||
this.ResourceDataDataGridView.DataSource = this.ResourceDataBindingSource;
|
||||
this.ResourceDataDataGridView.Location = new System.Drawing.Point(293, 109);
|
||||
this.ResourceDataDataGridView.MultiSelect = false;
|
||||
this.ResourceDataDataGridView.Name = "ResourceDataDataGridView";
|
||||
this.ResourceDataDataGridView.ReadOnly = true;
|
||||
this.ResourceDataDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.ResourceDataDataGridView.Size = new System.Drawing.Size(300, 220);
|
||||
this.ResourceDataDataGridView.TabIndex = 9;
|
||||
this.ResourceDataDataGridView.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.ResourceDataDataGridView_CellDoubleClick);
|
||||
//
|
||||
// DataGridViewTextBoxColumn6
|
||||
//
|
||||
this.DataGridViewTextBoxColumn6.DataPropertyName = "Id";
|
||||
this.DataGridViewTextBoxColumn6.HeaderText = "Id";
|
||||
this.DataGridViewTextBoxColumn6.Name = "DataGridViewTextBoxColumn6";
|
||||
this.DataGridViewTextBoxColumn6.ReadOnly = true;
|
||||
//
|
||||
// DataGridViewTextBoxColumn7
|
||||
//
|
||||
this.DataGridViewTextBoxColumn7.DataPropertyName = "Name";
|
||||
this.DataGridViewTextBoxColumn7.HeaderText = "Name";
|
||||
this.DataGridViewTextBoxColumn7.Name = "DataGridViewTextBoxColumn7";
|
||||
this.DataGridViewTextBoxColumn7.ReadOnly = true;
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(10, 21);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(58, 13);
|
||||
this.label6.TabIndex = 16;
|
||||
this.label6.Text = "Username:";
|
||||
//
|
||||
// usernameTextBox
|
||||
//
|
||||
this.usernameTextBox.Location = new System.Drawing.Point(70, 18);
|
||||
this.usernameTextBox.Name = "usernameTextBox";
|
||||
this.usernameTextBox.Size = new System.Drawing.Size(127, 20);
|
||||
this.usernameTextBox.TabIndex = 17;
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Location = new System.Drawing.Point(10, 47);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(56, 13);
|
||||
this.label7.TabIndex = 18;
|
||||
this.label7.Text = "Password:";
|
||||
//
|
||||
// passwordTextBox
|
||||
//
|
||||
this.passwordTextBox.Location = new System.Drawing.Point(70, 44);
|
||||
this.passwordTextBox.Name = "passwordTextBox";
|
||||
this.passwordTextBox.PasswordChar = '*';
|
||||
this.passwordTextBox.Size = new System.Drawing.Size(127, 20);
|
||||
this.passwordTextBox.TabIndex = 19;
|
||||
//
|
||||
// DataGridViewTextBoxColumn4
|
||||
//
|
||||
this.DataGridViewTextBoxColumn4.DataPropertyName = "ResourceId";
|
||||
this.DataGridViewTextBoxColumn4.HeaderText = "ResourceId";
|
||||
this.DataGridViewTextBoxColumn4.Name = "DataGridViewTextBoxColumn4";
|
||||
this.DataGridViewTextBoxColumn4.ReadOnly = true;
|
||||
this.DataGridViewTextBoxColumn4.Visible = false;
|
||||
//
|
||||
// DataGridViewTextBoxColumn3
|
||||
//
|
||||
this.DataGridViewTextBoxColumn3.DataPropertyName = "LastName";
|
||||
this.DataGridViewTextBoxColumn3.HeaderText = "LastName";
|
||||
this.DataGridViewTextBoxColumn3.Name = "DataGridViewTextBoxColumn3";
|
||||
this.DataGridViewTextBoxColumn3.ReadOnly = true;
|
||||
//
|
||||
// DataGridViewTextBoxColumn5
|
||||
//
|
||||
this.DataGridViewTextBoxColumn5.DataPropertyName = "FirstName";
|
||||
this.DataGridViewTextBoxColumn5.HeaderText = "FirstName";
|
||||
this.DataGridViewTextBoxColumn5.Name = "DataGridViewTextBoxColumn5";
|
||||
this.DataGridViewTextBoxColumn5.ReadOnly = true;
|
||||
//
|
||||
// DataGridViewTextBoxColumn10
|
||||
//
|
||||
this.DataGridViewTextBoxColumn10.DataPropertyName = "Assigned";
|
||||
this.DataGridViewTextBoxColumn10.HeaderText = "Assigned";
|
||||
this.DataGridViewTextBoxColumn10.Name = "DataGridViewTextBoxColumn10";
|
||||
this.DataGridViewTextBoxColumn10.ReadOnly = true;
|
||||
//
|
||||
// DataGridViewTextBoxColumn11
|
||||
//
|
||||
this.DataGridViewTextBoxColumn11.DataPropertyName = "Role";
|
||||
this.DataGridViewTextBoxColumn11.DataSource = this.RoleDataBindingSource;
|
||||
this.DataGridViewTextBoxColumn11.DisplayMember = "Name";
|
||||
this.DataGridViewTextBoxColumn11.HeaderText = "Role";
|
||||
this.DataGridViewTextBoxColumn11.Name = "DataGridViewTextBoxColumn11";
|
||||
this.DataGridViewTextBoxColumn11.ReadOnly = true;
|
||||
this.DataGridViewTextBoxColumn11.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.DataGridViewTextBoxColumn11.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.DataGridViewTextBoxColumn11.ValueMember = "Id";
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(914, 638);
|
||||
this.Controls.Add(this.passwordTextBox);
|
||||
this.Controls.Add(this.label7);
|
||||
this.Controls.Add(this.usernameTextBox);
|
||||
this.Controls.Add(this.label6);
|
||||
this.Controls.Add(this.Label3);
|
||||
this.Controls.Add(this.Label2);
|
||||
this.Controls.Add(this.Label1);
|
||||
this.Controls.Add(this.GroupBox1);
|
||||
this.Controls.Add(this.GroupBox2);
|
||||
this.Controls.Add(this.RoleInfoDataGridView);
|
||||
this.Controls.Add(this.ProjectDataDataGridView);
|
||||
this.Controls.Add(this.ResourceDataDataGridView);
|
||||
this.Name = "MainForm";
|
||||
this.Text = "Project Tracker Client";
|
||||
this.Load += new System.EventHandler(this.MainForm_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.ProjectDataBindingSource)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ResourceDataBindingSource)).EndInit();
|
||||
this.GroupBox1.ResumeLayout(false);
|
||||
this.GroupBox1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ProjectResourcesDataGridView)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.RoleDataBindingSource)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ProjectResourcesBindingSource)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ProjectDetailBindingSource)).EndInit();
|
||||
this.GroupBox2.ResumeLayout(false);
|
||||
this.GroupBox2.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.RoleInfoDataGridView)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ProjectDataDataGridView)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ResourceDataDataGridView)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
internal System.Windows.Forms.Label Label3;
|
||||
internal System.Windows.Forms.Label Label2;
|
||||
internal System.Windows.Forms.Label Label1;
|
||||
internal System.Windows.Forms.BindingSource RoleDataBindingSource;
|
||||
internal System.Windows.Forms.BindingSource ProjectResourcesBindingSource;
|
||||
internal System.Windows.Forms.BindingSource ProjectDetailBindingSource;
|
||||
internal System.Windows.Forms.Label Label5;
|
||||
internal System.Windows.Forms.Label Label4;
|
||||
internal System.Windows.Forms.Label NameLabel2;
|
||||
internal System.Windows.Forms.BindingSource ProjectDataBindingSource;
|
||||
internal System.Windows.Forms.Button AssignToProjectButton;
|
||||
internal System.Windows.Forms.Label NameLabel4;
|
||||
internal System.Windows.Forms.BindingSource ResourceDataBindingSource;
|
||||
internal System.Windows.Forms.GroupBox GroupBox1;
|
||||
internal System.Windows.Forms.DataGridView ProjectResourcesDataGridView;
|
||||
internal System.Windows.Forms.Button ClearProjectButton;
|
||||
internal System.Windows.Forms.Button SaveProjectButton;
|
||||
internal System.Windows.Forms.TextBox DescriptionTextBox;
|
||||
internal System.Windows.Forms.TextBox EndedTextBox;
|
||||
internal System.Windows.Forms.TextBox StartedTextBox;
|
||||
internal System.Windows.Forms.TextBox NameTextBox;
|
||||
internal System.Windows.Forms.Label IdLabel1;
|
||||
internal System.Windows.Forms.Label ResourceIdLabel;
|
||||
internal System.Windows.Forms.Label ProjectIdLabel;
|
||||
internal System.Windows.Forms.GroupBox GroupBox2;
|
||||
internal System.Windows.Forms.DataGridViewTextBoxColumn DataGridViewTextBoxColumn1;
|
||||
internal System.Windows.Forms.DataGridView RoleInfoDataGridView;
|
||||
internal System.Windows.Forms.DataGridView ProjectDataDataGridView;
|
||||
internal System.Windows.Forms.DataGridViewTextBoxColumn DataGridViewTextBoxColumn2;
|
||||
internal System.Windows.Forms.DataGridViewTextBoxColumn DataGridViewTextBoxColumn6;
|
||||
internal System.Windows.Forms.DataGridView ResourceDataDataGridView;
|
||||
internal System.Windows.Forms.DataGridViewTextBoxColumn DataGridViewTextBoxColumn7;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn idDataGridViewTextBoxColumn;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn nameDataGridViewTextBoxColumn;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.TextBox usernameTextBox;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.TextBox passwordTextBox;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn DataGridViewTextBoxColumn4;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn DataGridViewTextBoxColumn3;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn DataGridViewTextBoxColumn5;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn DataGridViewTextBoxColumn10;
|
||||
private System.Windows.Forms.DataGridViewComboBoxColumn DataGridViewTextBoxColumn11;
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,151 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using PTServiceClient;
|
||||
|
||||
namespace PTServiceClient
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void MainForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
using (PTService.PTService svc = new PTService.PTService())
|
||||
{
|
||||
this.ProjectDataBindingSource.DataSource =
|
||||
svc.GetProjectList();
|
||||
this.ResourceDataBindingSource.DataSource =
|
||||
svc.GetResourceList();
|
||||
this.RoleDataBindingSource.DataSource =
|
||||
svc.GetRoles();
|
||||
}
|
||||
}
|
||||
|
||||
private void ProjectDataDataGridView_SelectionChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (this.ProjectDataDataGridView.SelectedRows.Count > 0)
|
||||
{
|
||||
string projectId = this.ProjectDataDataGridView.SelectedRows[0].Cells[0].Value.ToString();
|
||||
if (projectId != this.IdLabel1.Text)
|
||||
{
|
||||
using (PTService.PTService svc = new PTService.PTService())
|
||||
{
|
||||
PTService.ProjectRequest request = new PTServiceClient.PTService.ProjectRequest();
|
||||
request.Id = new Guid(projectId);
|
||||
this.ProjectDetailBindingSource.DataSource = svc.GetProject(request);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SaveProjectButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (PTService.PTService svc = new PTService.PTService())
|
||||
{
|
||||
SetCredentials(svc);
|
||||
Guid id = new Guid(this.IdLabel1.Text);
|
||||
if (Guid.Empty.Equals(id))
|
||||
{
|
||||
// adding
|
||||
this.ProjectDetailBindingSource.DataSource =
|
||||
svc.AddProject(
|
||||
this.NameTextBox.Text,
|
||||
this.StartedTextBox.Text,
|
||||
this.EndedTextBox.Text,
|
||||
this.DescriptionTextBox.Text);
|
||||
}
|
||||
else
|
||||
{
|
||||
// updating
|
||||
this.ProjectDetailBindingSource.DataSource =
|
||||
svc.EditProject(new Guid(this.IdLabel1.Text),
|
||||
this.NameTextBox.Text,
|
||||
this.StartedTextBox.Text,
|
||||
this.EndedTextBox.Text,
|
||||
this.DescriptionTextBox.Text);
|
||||
}
|
||||
// refresh project list
|
||||
this.ProjectDataBindingSource.DataSource = svc.GetProjectList();
|
||||
}
|
||||
}
|
||||
|
||||
private void ClearProjectButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.ProjectDetailBindingSource.Clear();
|
||||
this.ProjectDetailBindingSource.AddNew();
|
||||
}
|
||||
|
||||
private void AssignToProjectButton_Click(
|
||||
object sender, EventArgs e)
|
||||
{
|
||||
if (this.ResourceIdLabel.Text.Trim().Length == 0)
|
||||
MessageBox.Show(
|
||||
"You must select a resource first", "Assign resource",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
if (this.ProjectIdLabel.Text.Trim().Length == 0 ||
|
||||
Guid.Empty.Equals(new Guid(this.ProjectIdLabel.Text)))
|
||||
MessageBox.Show(
|
||||
"You must select a project first", "Assign resource",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
using (PTService.PTService svc = new PTService.PTService())
|
||||
{
|
||||
SetCredentials(svc);
|
||||
try
|
||||
{
|
||||
// do the assignment
|
||||
svc.AssignResource(
|
||||
int.Parse(this.ResourceIdLabel.Text),
|
||||
new Guid(this.ProjectIdLabel.Text));
|
||||
// refresh the detail view
|
||||
PTService.ProjectRequest request =
|
||||
new PTServiceClient.PTService.ProjectRequest();
|
||||
request.Id = new Guid(this.ProjectIdLabel.Text);
|
||||
this.ProjectDetailBindingSource.DataSource =
|
||||
svc.GetProject(request);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "Assign resource",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ResourceDataDataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
ResourceName dlg = new ResourceName(this.ResourceDataDataGridView.SelectedRows[0].Cells[0].Value.ToString(),
|
||||
this.ResourceDataDataGridView.SelectedRows[0].Cells[1].Value.ToString());
|
||||
if (dlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
using (PTService.PTService svc = new PTService.PTService())
|
||||
{
|
||||
SetCredentials(svc);
|
||||
// save the changes
|
||||
int resourceId = int.Parse(dlg.IdLabel1.Text);
|
||||
string firstName = dlg.FirstNameTextBox.Text;
|
||||
string lastName = dlg.LastNameTextBox.Text;
|
||||
svc.ChangeResourceName(resourceId, firstName, lastName);
|
||||
// refresh the resource list.
|
||||
this.ResourceDataBindingSource.DataSource = svc.GetResourceList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetCredentials(PTService.PTService svc)
|
||||
{
|
||||
PTService.CslaCredentials credentials =
|
||||
new PTService.CslaCredentials();
|
||||
credentials.Username = usernameTextBox.Text;
|
||||
credentials.Password = passwordTextBox.Text;
|
||||
svc.CslaCredentialsValue = credentials;
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,162 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="DescriptionLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="EndedLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="StartedLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="NameLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="IdLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="NameLabel3.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="IdLabel4.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="NameLabel1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="IdLabel2.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="ProjectDataBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>375, 17</value>
|
||||
</metadata>
|
||||
<metadata name="ResourceDataBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>184, 17</value>
|
||||
</metadata>
|
||||
<metadata name="RoleDataBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="ProjectResourcesBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>555, 17</value>
|
||||
</metadata>
|
||||
<metadata name="ProjectDetailBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>763, 17</value>
|
||||
</metadata>
|
||||
</root>
|
@@ -0,0 +1,129 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.50727</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{457C09F3-B15D-474F-A761-DC3419E745EF}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>PTServiceClient</RootNamespace>
|
||||
<AssemblyName>PTServiceClient</AssemblyName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.EnterpriseServices" />
|
||||
<Reference Include="System.Web.Services" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="MainForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MainForm.Designer.cs">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="MainForm.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ResourceName.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<DependentUpon>ResourceName.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<Compile Include="ResourceName.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ResourceName.Designer.cs">
|
||||
<DependentUpon>ResourceName.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Web References\PTService\Reference.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Reference.map</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<WebReferences Include="Web References\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<WebReferenceUrl Include="http://localhost/PTWebServicecs/PTService.asmx">
|
||||
<UrlBehavior>Dynamic</UrlBehavior>
|
||||
<RelPath>Web References\PTService\</RelPath>
|
||||
<UpdateFromURL>http://localhost/PTWebServicecs/PTService.asmx</UpdateFromURL>
|
||||
<ServiceLocationURL>
|
||||
</ServiceLocationURL>
|
||||
<CachedDynamicPropName>
|
||||
</CachedDynamicPropName>
|
||||
<CachedAppSettingsObjectName>Settings</CachedAppSettingsObjectName>
|
||||
<CachedSettingsPropName>PTServiceClient_PTService_PTService</CachedSettingsPropName>
|
||||
</WebReferenceUrl>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
<None Include="Web References\PTService\ProjectData.datasource">
|
||||
<DependentUpon>Reference.map</DependentUpon>
|
||||
</None>
|
||||
<None Include="Web References\PTService\PTService.disco" />
|
||||
<None Include="Web References\PTService\PTService.wsdl" />
|
||||
<None Include="Web References\PTService\Reference.map">
|
||||
<Generator>MSDiscoCodeGenerator</Generator>
|
||||
<LastGenOutput>Reference.cs</LastGenOutput>
|
||||
</None>
|
||||
<None Include="Web References\PTService\ResourceData.datasource">
|
||||
<DependentUpon>Reference.map</DependentUpon>
|
||||
</None>
|
||||
<None Include="Web References\PTService\RoleInfo.datasource">
|
||||
<DependentUpon>Reference.map</DependentUpon>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace PTServiceClient
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new MainForm());
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,33 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("PTServiceClient")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("PTServiceClient")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2006")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("ffc67a41-6945-4a9a-83ab-9d0d88fe37d7")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
@@ -0,0 +1,71 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.42
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace PTServiceClient.Properties
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PTServiceClient.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
@@ -0,0 +1,36 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.42
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace PTServiceClient.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.WebServiceUrl)]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("http://localhost/PTWebServicecs/PTService.asmx")]
|
||||
public string PTServiceClient_PTService_PTService {
|
||||
get {
|
||||
return ((string)(this["PTServiceClient_PTService_PTService"]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,9 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="PTServiceClient.Properties" GeneratedClassName="Settings">
|
||||
<Profiles />
|
||||
<Settings>
|
||||
<Setting Name="PTServiceClient_PTService_PTService" Type="(Web Service URL)" Scope="Application">
|
||||
<Value Profile="(Default)">http://localhost/PTWebServicecs/PTService.asmx</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
192
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTServiceClient/ResourceName.Designer.cs
generated
Normal file
192
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTServiceClient/ResourceName.Designer.cs
generated
Normal file
@@ -0,0 +1,192 @@
|
||||
namespace PTServiceClient
|
||||
{
|
||||
partial class ResourceName
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.Windows.Forms.Label NameLabel;
|
||||
System.Windows.Forms.Label IdLabel;
|
||||
this.Cancel_Button = new System.Windows.Forms.Button();
|
||||
this.NameLabel1 = new System.Windows.Forms.Label();
|
||||
this.OK_Button = new System.Windows.Forms.Button();
|
||||
this.IdLabel1 = new System.Windows.Forms.Label();
|
||||
this.LastNameTextBox = new System.Windows.Forms.TextBox();
|
||||
this.Label2 = new System.Windows.Forms.Label();
|
||||
this.FirstNameTextBox = new System.Windows.Forms.TextBox();
|
||||
this.Label1 = new System.Windows.Forms.Label();
|
||||
this.TableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
NameLabel = new System.Windows.Forms.Label();
|
||||
IdLabel = new System.Windows.Forms.Label();
|
||||
this.TableLayoutPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// NameLabel
|
||||
//
|
||||
NameLabel.AutoSize = true;
|
||||
NameLabel.Location = new System.Drawing.Point(10, 38);
|
||||
NameLabel.Name = "NameLabel";
|
||||
NameLabel.Size = new System.Drawing.Size(38, 13);
|
||||
NameLabel.TabIndex = 15;
|
||||
NameLabel.Text = "Name:";
|
||||
//
|
||||
// Cancel_Button
|
||||
//
|
||||
this.Cancel_Button.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.Cancel_Button.Location = new System.Drawing.Point(76, 3);
|
||||
this.Cancel_Button.Name = "Cancel_Button";
|
||||
this.Cancel_Button.Size = new System.Drawing.Size(67, 23);
|
||||
this.Cancel_Button.TabIndex = 1;
|
||||
this.Cancel_Button.Text = "Cancel";
|
||||
this.Cancel_Button.Click += new System.EventHandler(this.Cancel_Button_Click);
|
||||
//
|
||||
// NameLabel1
|
||||
//
|
||||
this.NameLabel1.Location = new System.Drawing.Point(97, 38);
|
||||
this.NameLabel1.Name = "NameLabel1";
|
||||
this.NameLabel1.Size = new System.Drawing.Size(236, 23);
|
||||
this.NameLabel1.TabIndex = 17;
|
||||
//
|
||||
// OK_Button
|
||||
//
|
||||
this.OK_Button.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.OK_Button.Location = new System.Drawing.Point(3, 3);
|
||||
this.OK_Button.Name = "OK_Button";
|
||||
this.OK_Button.Size = new System.Drawing.Size(67, 23);
|
||||
this.OK_Button.TabIndex = 0;
|
||||
this.OK_Button.Text = "OK";
|
||||
this.OK_Button.Click += new System.EventHandler(this.OK_Button_Click);
|
||||
//
|
||||
// IdLabel
|
||||
//
|
||||
IdLabel.AutoSize = true;
|
||||
IdLabel.Location = new System.Drawing.Point(10, 15);
|
||||
IdLabel.Name = "IdLabel";
|
||||
IdLabel.Size = new System.Drawing.Size(19, 13);
|
||||
IdLabel.TabIndex = 14;
|
||||
IdLabel.Text = "Id:";
|
||||
//
|
||||
// IdLabel1
|
||||
//
|
||||
this.IdLabel1.Location = new System.Drawing.Point(97, 15);
|
||||
this.IdLabel1.Name = "IdLabel1";
|
||||
this.IdLabel1.Size = new System.Drawing.Size(236, 23);
|
||||
this.IdLabel1.TabIndex = 16;
|
||||
//
|
||||
// LastNameTextBox
|
||||
//
|
||||
this.LastNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.LastNameTextBox.Location = new System.Drawing.Point(100, 106);
|
||||
this.LastNameTextBox.Name = "LastNameTextBox";
|
||||
this.LastNameTextBox.Size = new System.Drawing.Size(244, 20);
|
||||
this.LastNameTextBox.TabIndex = 13;
|
||||
//
|
||||
// Label2
|
||||
//
|
||||
this.Label2.AutoSize = true;
|
||||
this.Label2.Location = new System.Drawing.Point(10, 109);
|
||||
this.Label2.Name = "Label2";
|
||||
this.Label2.Size = new System.Drawing.Size(59, 13);
|
||||
this.Label2.TabIndex = 12;
|
||||
this.Label2.Text = "Last name:";
|
||||
//
|
||||
// FirstNameTextBox
|
||||
//
|
||||
this.FirstNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.FirstNameTextBox.Location = new System.Drawing.Point(100, 80);
|
||||
this.FirstNameTextBox.Name = "FirstNameTextBox";
|
||||
this.FirstNameTextBox.Size = new System.Drawing.Size(244, 20);
|
||||
this.FirstNameTextBox.TabIndex = 11;
|
||||
//
|
||||
// Label1
|
||||
//
|
||||
this.Label1.AutoSize = true;
|
||||
this.Label1.Location = new System.Drawing.Point(10, 83);
|
||||
this.Label1.Name = "Label1";
|
||||
this.Label1.Size = new System.Drawing.Size(58, 13);
|
||||
this.Label1.TabIndex = 10;
|
||||
this.Label1.Text = "First name:";
|
||||
//
|
||||
// TableLayoutPanel1
|
||||
//
|
||||
this.TableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TableLayoutPanel1.ColumnCount = 2;
|
||||
this.TableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.TableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.TableLayoutPanel1.Controls.Add(this.OK_Button, 0, 0);
|
||||
this.TableLayoutPanel1.Controls.Add(this.Cancel_Button, 1, 0);
|
||||
this.TableLayoutPanel1.Location = new System.Drawing.Point(198, 148);
|
||||
this.TableLayoutPanel1.Name = "TableLayoutPanel1";
|
||||
this.TableLayoutPanel1.RowCount = 1;
|
||||
this.TableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.TableLayoutPanel1.Size = new System.Drawing.Size(146, 29);
|
||||
this.TableLayoutPanel1.TabIndex = 9;
|
||||
//
|
||||
// ResourceName
|
||||
//
|
||||
this.AcceptButton = this.OK_Button;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.Cancel_Button;
|
||||
this.ClientSize = new System.Drawing.Size(355, 193);
|
||||
this.Controls.Add(NameLabel);
|
||||
this.Controls.Add(this.NameLabel1);
|
||||
this.Controls.Add(IdLabel);
|
||||
this.Controls.Add(this.IdLabel1);
|
||||
this.Controls.Add(this.LastNameTextBox);
|
||||
this.Controls.Add(this.Label2);
|
||||
this.Controls.Add(this.FirstNameTextBox);
|
||||
this.Controls.Add(this.Label1);
|
||||
this.Controls.Add(this.TableLayoutPanel1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "ResourceName";
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "ResourceName";
|
||||
this.TableLayoutPanel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
internal System.Windows.Forms.Button Cancel_Button;
|
||||
internal System.Windows.Forms.Label NameLabel1;
|
||||
internal System.Windows.Forms.Button OK_Button;
|
||||
internal System.Windows.Forms.Label IdLabel1;
|
||||
internal System.Windows.Forms.TextBox LastNameTextBox;
|
||||
internal System.Windows.Forms.Label Label2;
|
||||
internal System.Windows.Forms.TextBox FirstNameTextBox;
|
||||
internal System.Windows.Forms.Label Label1;
|
||||
internal System.Windows.Forms.TableLayoutPanel TableLayoutPanel1;
|
||||
}
|
||||
}
|
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace PTServiceClient
|
||||
{
|
||||
public partial class ResourceName : Form
|
||||
{
|
||||
public ResourceName(string id, string name)
|
||||
{
|
||||
InitializeComponent();
|
||||
this.IdLabel1.Text = id;
|
||||
this.NameLabel1.Text = name;
|
||||
}
|
||||
|
||||
private void OK_Button_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.DialogResult = DialogResult.OK;
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void Cancel_Button_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.DialogResult = DialogResult.Cancel;
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="NameLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="IdLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
</root>
|
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<discovery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/disco/">
|
||||
<contractRef ref="http://localhost/PTWebServicecs/PTService.asmx?wsdl" docRef="http://localhost/PTWebServicecs/PTService.asmx" xmlns="http://schemas.xmlsoap.org/disco/scl/" />
|
||||
<soap address="http://localhost/PTWebServicecs/PTService.asmx" xmlns:q1="http://ws.lhotka.net/" binding="q1:PTServiceSoap" xmlns="http://schemas.xmlsoap.org/disco/soap/" />
|
||||
<soap address="http://localhost/PTWebServicecs/PTService.asmx" xmlns:q2="http://ws.lhotka.net/" binding="q2:PTServiceSoap12" xmlns="http://schemas.xmlsoap.org/disco/soap/" />
|
||||
</discovery>
|
@@ -0,0 +1,515 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://ws.lhotka.net/" xmlns:s1="http://microsoft.com/wsdl/types/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://ws.lhotka.net/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
|
||||
<wsdl:types>
|
||||
<s:schema elementFormDefault="qualified" targetNamespace="http://ws.lhotka.net/">
|
||||
<s:import namespace="http://microsoft.com/wsdl/types/" />
|
||||
<s:element name="GetProjectList">
|
||||
<s:complexType />
|
||||
</s:element>
|
||||
<s:element name="GetProjectListResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="GetProjectListResult" type="tns:ArrayOfProjectData" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:complexType name="ArrayOfProjectData">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="ProjectData" nillable="true" type="tns:ProjectData" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
<s:complexType name="ProjectData">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="1" maxOccurs="1" name="Id" type="s1:guid" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Started" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Ended" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Description" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="ProjectResources" type="tns:ArrayOfProjectResourceData" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
<s:complexType name="ArrayOfProjectResourceData">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="ProjectResourceData" nillable="true" type="tns:ProjectResourceData" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
<s:complexType name="ProjectResourceData">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="1" maxOccurs="1" name="ResourceId" type="s:int" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="LastName" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Assigned" type="s:string" />
|
||||
<s:element minOccurs="1" maxOccurs="1" name="Role" type="s:int" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
<s:element name="GetProject">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="request" type="tns:ProjectRequest" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:complexType name="ProjectRequest">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="1" maxOccurs="1" name="Id" type="s1:guid" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
<s:element name="GetProjectResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="GetProjectResult" type="tns:ProjectData" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="AddProject">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="name" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="started" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="ended" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="description" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="AddProjectResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="AddProjectResult" type="tns:ProjectData" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="CslaCredentials" type="tns:CslaCredentials" />
|
||||
<s:complexType name="CslaCredentials">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Username" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Password" type="s:string" />
|
||||
</s:sequence>
|
||||
<s:anyAttribute />
|
||||
</s:complexType>
|
||||
<s:element name="EditProject">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="1" maxOccurs="1" name="id" type="s1:guid" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="name" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="started" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="ended" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="description" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="EditProjectResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="EditProjectResult" type="tns:ProjectData" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="GetResourceList">
|
||||
<s:complexType />
|
||||
</s:element>
|
||||
<s:element name="GetResourceListResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="GetResourceListResult" type="tns:ArrayOfResourceData" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:complexType name="ArrayOfResourceData">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="ResourceData" nillable="true" type="tns:ResourceData" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
<s:complexType name="ResourceData">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="1" maxOccurs="1" name="Id" type="s:int" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="ResourceAssignments" type="tns:ArrayOfResourceAssignmentData" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
<s:complexType name="ArrayOfResourceAssignmentData">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="ResourceAssignmentData" nillable="true" type="tns:ResourceAssignmentData" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
<s:complexType name="ResourceAssignmentData">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="1" maxOccurs="1" name="ProjectId" type="s1:guid" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="ProjectName" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Assigned" type="s:string" />
|
||||
<s:element minOccurs="1" maxOccurs="1" name="Role" type="s:int" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
<s:element name="GetResource">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="request" type="tns:ResourceRequest" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:complexType name="ResourceRequest">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="1" maxOccurs="1" name="Id" type="s:int" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
<s:element name="GetResourceResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="GetResourceResult" type="tns:ResourceData" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="ChangeResourceName">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="1" maxOccurs="1" name="id" type="s:int" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="firstName" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="lastName" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="ChangeResourceNameResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="ChangeResourceNameResult" type="tns:ResourceData" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="AssignResource">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="1" maxOccurs="1" name="resourceId" type="s:int" />
|
||||
<s:element minOccurs="1" maxOccurs="1" name="projectId" type="s1:guid" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="AssignResourceResponse">
|
||||
<s:complexType />
|
||||
</s:element>
|
||||
<s:element name="GetRoles">
|
||||
<s:complexType />
|
||||
</s:element>
|
||||
<s:element name="GetRolesResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="GetRolesResult" type="tns:ArrayOfRoleInfo" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:complexType name="ArrayOfRoleInfo">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="unbounded" name="RoleInfo" nillable="true" type="tns:RoleInfo" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
<s:complexType name="RoleInfo">
|
||||
<s:sequence>
|
||||
<s:element minOccurs="1" maxOccurs="1" name="Id" type="s:int" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:schema>
|
||||
<s:schema elementFormDefault="qualified" targetNamespace="http://microsoft.com/wsdl/types/">
|
||||
<s:simpleType name="guid">
|
||||
<s:restriction base="s:string">
|
||||
<s:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}" />
|
||||
</s:restriction>
|
||||
</s:simpleType>
|
||||
</s:schema>
|
||||
</wsdl:types>
|
||||
<wsdl:message name="GetProjectListSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:GetProjectList" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetProjectListSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:GetProjectListResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetProjectSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:GetProject" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetProjectSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:GetProjectResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="AddProjectSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:AddProject" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="AddProjectSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:AddProjectResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="AddProjectCslaCredentials">
|
||||
<wsdl:part name="CslaCredentials" element="tns:CslaCredentials" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="EditProjectSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:EditProject" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="EditProjectSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:EditProjectResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="EditProjectCslaCredentials">
|
||||
<wsdl:part name="CslaCredentials" element="tns:CslaCredentials" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetResourceListSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:GetResourceList" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetResourceListSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:GetResourceListResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetResourceSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:GetResource" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetResourceSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:GetResourceResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="ChangeResourceNameSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:ChangeResourceName" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="ChangeResourceNameSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:ChangeResourceNameResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="ChangeResourceNameCslaCredentials">
|
||||
<wsdl:part name="CslaCredentials" element="tns:CslaCredentials" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="AssignResourceSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:AssignResource" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="AssignResourceSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:AssignResourceResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="AssignResourceCslaCredentials">
|
||||
<wsdl:part name="CslaCredentials" element="tns:CslaCredentials" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetRolesSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:GetRoles" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetRolesSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:GetRolesResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:portType name="PTServiceSoap">
|
||||
<wsdl:operation name="GetProjectList">
|
||||
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get a list of projects</wsdl:documentation>
|
||||
<wsdl:input message="tns:GetProjectListSoapIn" />
|
||||
<wsdl:output message="tns:GetProjectListSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetProject">
|
||||
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get a project</wsdl:documentation>
|
||||
<wsdl:input message="tns:GetProjectSoapIn" />
|
||||
<wsdl:output message="tns:GetProjectSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="AddProject">
|
||||
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Add a project</wsdl:documentation>
|
||||
<wsdl:input message="tns:AddProjectSoapIn" />
|
||||
<wsdl:output message="tns:AddProjectSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="EditProject">
|
||||
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Edit a project</wsdl:documentation>
|
||||
<wsdl:input message="tns:EditProjectSoapIn" />
|
||||
<wsdl:output message="tns:EditProjectSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetResourceList">
|
||||
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get a list of resources</wsdl:documentation>
|
||||
<wsdl:input message="tns:GetResourceListSoapIn" />
|
||||
<wsdl:output message="tns:GetResourceListSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetResource">
|
||||
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get a resource</wsdl:documentation>
|
||||
<wsdl:input message="tns:GetResourceSoapIn" />
|
||||
<wsdl:output message="tns:GetResourceSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="ChangeResourceName">
|
||||
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Change a resource's name</wsdl:documentation>
|
||||
<wsdl:input message="tns:ChangeResourceNameSoapIn" />
|
||||
<wsdl:output message="tns:ChangeResourceNameSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="AssignResource">
|
||||
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Assign resource to a project</wsdl:documentation>
|
||||
<wsdl:input message="tns:AssignResourceSoapIn" />
|
||||
<wsdl:output message="tns:AssignResourceSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetRoles">
|
||||
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get a list of roles</wsdl:documentation>
|
||||
<wsdl:input message="tns:GetRolesSoapIn" />
|
||||
<wsdl:output message="tns:GetRolesSoapOut" />
|
||||
</wsdl:operation>
|
||||
</wsdl:portType>
|
||||
<wsdl:binding name="PTServiceSoap" type="tns:PTServiceSoap">
|
||||
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
|
||||
<wsdl:operation name="GetProjectList">
|
||||
<soap:operation soapAction="http://ws.lhotka.net/GetProjectList" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetProject">
|
||||
<soap:operation soapAction="http://ws.lhotka.net/GetProject" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="AddProject">
|
||||
<soap:operation soapAction="http://ws.lhotka.net/AddProject" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
<soap:header message="tns:AddProjectCslaCredentials" part="CslaCredentials" use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="EditProject">
|
||||
<soap:operation soapAction="http://ws.lhotka.net/EditProject" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
<soap:header message="tns:EditProjectCslaCredentials" part="CslaCredentials" use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetResourceList">
|
||||
<soap:operation soapAction="http://ws.lhotka.net/GetResourceList" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetResource">
|
||||
<soap:operation soapAction="http://ws.lhotka.net/GetResource" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="ChangeResourceName">
|
||||
<soap:operation soapAction="http://ws.lhotka.net/ChangeResourceName" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
<soap:header message="tns:ChangeResourceNameCslaCredentials" part="CslaCredentials" use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="AssignResource">
|
||||
<soap:operation soapAction="http://ws.lhotka.net/AssignResource" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
<soap:header message="tns:AssignResourceCslaCredentials" part="CslaCredentials" use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetRoles">
|
||||
<soap:operation soapAction="http://ws.lhotka.net/GetRoles" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
</wsdl:binding>
|
||||
<wsdl:binding name="PTServiceSoap12" type="tns:PTServiceSoap">
|
||||
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
|
||||
<wsdl:operation name="GetProjectList">
|
||||
<soap12:operation soapAction="http://ws.lhotka.net/GetProjectList" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetProject">
|
||||
<soap12:operation soapAction="http://ws.lhotka.net/GetProject" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="AddProject">
|
||||
<soap12:operation soapAction="http://ws.lhotka.net/AddProject" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
<soap12:header message="tns:AddProjectCslaCredentials" part="CslaCredentials" use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="EditProject">
|
||||
<soap12:operation soapAction="http://ws.lhotka.net/EditProject" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
<soap12:header message="tns:EditProjectCslaCredentials" part="CslaCredentials" use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetResourceList">
|
||||
<soap12:operation soapAction="http://ws.lhotka.net/GetResourceList" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetResource">
|
||||
<soap12:operation soapAction="http://ws.lhotka.net/GetResource" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="ChangeResourceName">
|
||||
<soap12:operation soapAction="http://ws.lhotka.net/ChangeResourceName" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
<soap12:header message="tns:ChangeResourceNameCslaCredentials" part="CslaCredentials" use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="AssignResource">
|
||||
<soap12:operation soapAction="http://ws.lhotka.net/AssignResource" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
<soap12:header message="tns:AssignResourceCslaCredentials" part="CslaCredentials" use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetRoles">
|
||||
<soap12:operation soapAction="http://ws.lhotka.net/GetRoles" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
</wsdl:binding>
|
||||
<wsdl:service name="PTService">
|
||||
<wsdl:port name="PTServiceSoap" binding="tns:PTServiceSoap">
|
||||
<soap:address location="http://localhost/PTWebServicecs/PTService.asmx" />
|
||||
</wsdl:port>
|
||||
<wsdl:port name="PTServiceSoap12" binding="tns:PTServiceSoap12">
|
||||
<soap12:address location="http://localhost/PTWebServicecs/PTService.asmx" />
|
||||
</wsdl:port>
|
||||
</wsdl:service>
|
||||
</wsdl:definitions>
|
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is automatically generated by Visual Studio .Net. It is
|
||||
used to store generic object data source configuration information.
|
||||
Renaming the file extension or editing the content of this file may
|
||||
cause the file to be unrecognizable by the program.
|
||||
-->
|
||||
<GenericObjectDataSource DisplayName="ProjectData" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
|
||||
<TypeInfo>PTServiceClient.PTService.ProjectData, Web References.PTService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
|
||||
</GenericObjectDataSource>
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<DiscoveryClientResultsFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<Results>
|
||||
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="http://localhost/PTWebServicecs/PTService.asmx?wsdl" filename="PTService.wsdl" />
|
||||
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.DiscoveryDocumentReference" url="http://localhost/PTWebServicecs/PTService.asmx?disco" filename="PTService.disco" />
|
||||
</Results>
|
||||
</DiscoveryClientResultsFile>
|
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is automatically generated by Visual Studio .Net. It is
|
||||
used to store generic object data source configuration information.
|
||||
Renaming the file extension or editing the content of this file may
|
||||
cause the file to be unrecognizable by the program.
|
||||
-->
|
||||
<GenericObjectDataSource DisplayName="ResourceData" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
|
||||
<TypeInfo>PTServiceClient.PTService.ResourceData, Web References.PTService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
|
||||
</GenericObjectDataSource>
|
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is automatically generated by Visual Studio .Net. It is
|
||||
used to store generic object data source configuration information.
|
||||
Renaming the file extension or editing the content of this file may
|
||||
cause the file to be unrecognizable by the program.
|
||||
-->
|
||||
<GenericObjectDataSource DisplayName="RoleInfo" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
|
||||
<TypeInfo>PTServiceClient.PTService.RoleInfo, Web References.PTService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
|
||||
</GenericObjectDataSource>
|
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||
<section name="PTServiceClient.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
<applicationSettings>
|
||||
<PTServiceClient.Properties.Settings>
|
||||
<setting name="PTServiceClient_PTService_PTService" serializeAs="String">
|
||||
<value>http://localhost/PTWebServicecs/PTService.asmx</value>
|
||||
</setting>
|
||||
</PTServiceClient.Properties.Settings>
|
||||
</applicationSettings>
|
||||
</configuration>
|
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
</configSections>
|
||||
<appSettings>
|
||||
<add key="CslaAuthentication" value="Csla" />
|
||||
<!--<add key="CslaDataPortalProxy"
|
||||
value="Csla.DataPortalClient.RemotingProxy, Csla"/>
|
||||
<add key="CslaDataPortalUrl"
|
||||
value="http://localhost:3187/RemotingHost/RemotingPortal.rem"/>-->
|
||||
<!--<add key="CslaDataPortalProxy"
|
||||
value="Csla.DataPortalClient.WebServicesProxy, Csla"/>
|
||||
<add key="CslaDataPortalUrl"
|
||||
value="http://localhost:4334/WebServicesHost/WebServicePortal.asmx"/>-->
|
||||
<!--<add key="CslaDataPortalProxy"
|
||||
value="EnterpriseServicesHost.EnterpriseServicesProxy, EnterpriseServicesHostcs"/>-->
|
||||
</appSettings>
|
||||
<connectionStrings>
|
||||
<add name="PTracker"
|
||||
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Visual Studio Projects\csla20\ProjectTracker20cs\PTracker.mdf";Integrated Security=True;User Instance=True"
|
||||
providerName="System.Data.SqlClient" />
|
||||
<add name="Security"
|
||||
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Visual Studio Projects\csla20\ProjectTracker20cs\Security.mdf";Integrated Security=True;User Instance=True"
|
||||
providerName="System.Data.SqlClient" />
|
||||
</connectionStrings>
|
||||
<system.diagnostics>
|
||||
<sources>
|
||||
<!-- This section defines the logging configuration for My.Application.Log -->
|
||||
<source name="DefaultSource" switchName="DefaultSwitch">
|
||||
<listeners>
|
||||
<add name="FileLog"/>
|
||||
<!-- Uncomment the below section to write to the Application Event Log -->
|
||||
<!--<add name="EventLog"/>-->
|
||||
</listeners>
|
||||
</source>
|
||||
</sources>
|
||||
<switches>
|
||||
<add name="DefaultSwitch" value="Information" />
|
||||
</switches>
|
||||
<sharedListeners>
|
||||
<add name="FileLog"
|
||||
type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
|
||||
initializeData="FileLogWriter"/>
|
||||
<!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
|
||||
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
|
||||
</sharedListeners>
|
||||
</system.diagnostics>
|
||||
</configuration>
|
141
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/LoginForm.Designer.cs
generated
Normal file
141
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/LoginForm.Designer.cs
generated
Normal file
@@ -0,0 +1,141 @@
|
||||
namespace PTWin
|
||||
{
|
||||
partial class LoginForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginForm));
|
||||
this.Cancel = new System.Windows.Forms.Button();
|
||||
this.OK = new System.Windows.Forms.Button();
|
||||
this.PasswordTextBox = new System.Windows.Forms.TextBox();
|
||||
this.UsernameTextBox = new System.Windows.Forms.TextBox();
|
||||
this.PasswordLabel = new System.Windows.Forms.Label();
|
||||
this.UsernameLabel = new System.Windows.Forms.Label();
|
||||
this.LogoPictureBox = new System.Windows.Forms.PictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.LogoPictureBox)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// Cancel
|
||||
//
|
||||
this.Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.Cancel.Location = new System.Drawing.Point(300, 161);
|
||||
this.Cancel.Name = "Cancel";
|
||||
this.Cancel.Size = new System.Drawing.Size(94, 23);
|
||||
this.Cancel.TabIndex = 12;
|
||||
this.Cancel.Text = "&Cancel";
|
||||
this.Cancel.Click += new System.EventHandler(this.Cancel_Click);
|
||||
//
|
||||
// OK
|
||||
//
|
||||
this.OK.Location = new System.Drawing.Point(197, 161);
|
||||
this.OK.Name = "OK";
|
||||
this.OK.Size = new System.Drawing.Size(94, 23);
|
||||
this.OK.TabIndex = 11;
|
||||
this.OK.Text = "&OK";
|
||||
this.OK.Click += new System.EventHandler(this.OK_Click);
|
||||
//
|
||||
// PasswordTextBox
|
||||
//
|
||||
this.PasswordTextBox.Location = new System.Drawing.Point(174, 101);
|
||||
this.PasswordTextBox.Name = "PasswordTextBox";
|
||||
this.PasswordTextBox.PasswordChar = '*';
|
||||
this.PasswordTextBox.Size = new System.Drawing.Size(220, 20);
|
||||
this.PasswordTextBox.TabIndex = 10;
|
||||
//
|
||||
// UsernameTextBox
|
||||
//
|
||||
this.UsernameTextBox.Location = new System.Drawing.Point(174, 44);
|
||||
this.UsernameTextBox.Name = "UsernameTextBox";
|
||||
this.UsernameTextBox.Size = new System.Drawing.Size(220, 20);
|
||||
this.UsernameTextBox.TabIndex = 8;
|
||||
//
|
||||
// PasswordLabel
|
||||
//
|
||||
this.PasswordLabel.Location = new System.Drawing.Point(172, 81);
|
||||
this.PasswordLabel.Name = "PasswordLabel";
|
||||
this.PasswordLabel.Size = new System.Drawing.Size(220, 23);
|
||||
this.PasswordLabel.TabIndex = 9;
|
||||
this.PasswordLabel.Text = "&Password";
|
||||
this.PasswordLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// UsernameLabel
|
||||
//
|
||||
this.UsernameLabel.Location = new System.Drawing.Point(172, 24);
|
||||
this.UsernameLabel.Name = "UsernameLabel";
|
||||
this.UsernameLabel.Size = new System.Drawing.Size(220, 23);
|
||||
this.UsernameLabel.TabIndex = 6;
|
||||
this.UsernameLabel.Text = "&User name";
|
||||
this.UsernameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// LogoPictureBox
|
||||
//
|
||||
this.LogoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("LogoPictureBox.Image")));
|
||||
this.LogoPictureBox.Location = new System.Drawing.Point(0, 0);
|
||||
this.LogoPictureBox.Name = "LogoPictureBox";
|
||||
this.LogoPictureBox.Size = new System.Drawing.Size(165, 193);
|
||||
this.LogoPictureBox.TabIndex = 7;
|
||||
this.LogoPictureBox.TabStop = false;
|
||||
//
|
||||
// LoginForm
|
||||
//
|
||||
this.AcceptButton = this.OK;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.Cancel;
|
||||
this.ClientSize = new System.Drawing.Size(401, 192);
|
||||
this.Controls.Add(this.Cancel);
|
||||
this.Controls.Add(this.OK);
|
||||
this.Controls.Add(this.PasswordTextBox);
|
||||
this.Controls.Add(this.UsernameTextBox);
|
||||
this.Controls.Add(this.PasswordLabel);
|
||||
this.Controls.Add(this.UsernameLabel);
|
||||
this.Controls.Add(this.LogoPictureBox);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "LoginForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Log in";
|
||||
this.Load += new System.EventHandler(this.LoginForm_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.LogoPictureBox)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
internal System.Windows.Forms.Button Cancel;
|
||||
internal System.Windows.Forms.Button OK;
|
||||
internal System.Windows.Forms.TextBox PasswordTextBox;
|
||||
internal System.Windows.Forms.TextBox UsernameTextBox;
|
||||
internal System.Windows.Forms.Label PasswordLabel;
|
||||
internal System.Windows.Forms.Label UsernameLabel;
|
||||
internal System.Windows.Forms.PictureBox LogoPictureBox;
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace PTWin
|
||||
{
|
||||
public partial class LoginForm : Form
|
||||
{
|
||||
public LoginForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void OK_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (StatusBusy busy =
|
||||
new StatusBusy("Verifying credentials..."))
|
||||
{
|
||||
ProjectTracker.Library.Security.PTPrincipal.Login(
|
||||
this.UsernameTextBox.Text, this.PasswordTextBox.Text);
|
||||
}
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void Cancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void LoginForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
this.UsernameTextBox.Focus();
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,772 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="LogoPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
240
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/MainForm.Designer.cs
generated
Normal file
240
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/MainForm.Designer.cs
generated
Normal file
@@ -0,0 +1,240 @@
|
||||
namespace PTWin
|
||||
{
|
||||
partial class MainForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.ProjectsStripDropDownButton1 = new System.Windows.Forms.ToolStripDropDownButton();
|
||||
this.NewProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.EditProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.DeleteProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ResourcesToolStripDropDownButton = new System.Windows.Forms.ToolStripDropDownButton();
|
||||
this.NewResourceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.EditResourceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.DeleteResourceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.AdminToolStripDropDownButton = new System.Windows.Forms.ToolStripDropDownButton();
|
||||
this.EditRolesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.LoginToolStripLabel = new System.Windows.Forms.ToolStripLabel();
|
||||
this.LoginToolStripButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.DocumentsToolStripDropDownButton = new System.Windows.Forms.ToolStripDropDownButton();
|
||||
this.Panel1 = new System.Windows.Forms.Panel();
|
||||
this.StatusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.StatusLabel = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.StatusStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.ProjectsStripDropDownButton1,
|
||||
this.ResourcesToolStripDropDownButton,
|
||||
this.AdminToolStripDropDownButton,
|
||||
this.LoginToolStripLabel,
|
||||
this.LoginToolStripButton,
|
||||
this.DocumentsToolStripDropDownButton});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(827, 25);
|
||||
this.toolStrip1.TabIndex = 1;
|
||||
//
|
||||
// ProjectsStripDropDownButton1
|
||||
//
|
||||
this.ProjectsStripDropDownButton1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.NewProjectToolStripMenuItem,
|
||||
this.EditProjectToolStripMenuItem,
|
||||
this.DeleteProjectToolStripMenuItem});
|
||||
this.ProjectsStripDropDownButton1.Image = ((System.Drawing.Image)(resources.GetObject("ProjectsStripDropDownButton1.Image")));
|
||||
this.ProjectsStripDropDownButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.ProjectsStripDropDownButton1.Name = "ProjectsStripDropDownButton1";
|
||||
this.ProjectsStripDropDownButton1.Size = new System.Drawing.Size(75, 22);
|
||||
this.ProjectsStripDropDownButton1.Text = "Projects";
|
||||
//
|
||||
// NewProjectToolStripMenuItem
|
||||
//
|
||||
this.NewProjectToolStripMenuItem.Name = "NewProjectToolStripMenuItem";
|
||||
this.NewProjectToolStripMenuItem.Size = new System.Drawing.Size(142, 22);
|
||||
this.NewProjectToolStripMenuItem.Text = "New project";
|
||||
this.NewProjectToolStripMenuItem.Click += new System.EventHandler(this.NewProjectToolStripMenuItem_Click);
|
||||
//
|
||||
// EditProjectToolStripMenuItem
|
||||
//
|
||||
this.EditProjectToolStripMenuItem.Name = "EditProjectToolStripMenuItem";
|
||||
this.EditProjectToolStripMenuItem.Size = new System.Drawing.Size(142, 22);
|
||||
this.EditProjectToolStripMenuItem.Text = "Edit project";
|
||||
this.EditProjectToolStripMenuItem.Click += new System.EventHandler(this.EditProjectToolStripMenuItem_Click);
|
||||
//
|
||||
// DeleteProjectToolStripMenuItem
|
||||
//
|
||||
this.DeleteProjectToolStripMenuItem.Name = "DeleteProjectToolStripMenuItem";
|
||||
this.DeleteProjectToolStripMenuItem.Size = new System.Drawing.Size(142, 22);
|
||||
this.DeleteProjectToolStripMenuItem.Text = "Delete project";
|
||||
this.DeleteProjectToolStripMenuItem.Click += new System.EventHandler(this.DeleteProjectToolStripMenuItem_Click);
|
||||
//
|
||||
// ResourcesToolStripDropDownButton
|
||||
//
|
||||
this.ResourcesToolStripDropDownButton.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.NewResourceToolStripMenuItem,
|
||||
this.EditResourceToolStripMenuItem,
|
||||
this.DeleteResourceToolStripMenuItem});
|
||||
this.ResourcesToolStripDropDownButton.Image = ((System.Drawing.Image)(resources.GetObject("ResourcesToolStripDropDownButton.Image")));
|
||||
this.ResourcesToolStripDropDownButton.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.ResourcesToolStripDropDownButton.Name = "ResourcesToolStripDropDownButton";
|
||||
this.ResourcesToolStripDropDownButton.Size = new System.Drawing.Size(86, 22);
|
||||
this.ResourcesToolStripDropDownButton.Text = "Resources";
|
||||
//
|
||||
// NewResourceToolStripMenuItem
|
||||
//
|
||||
this.NewResourceToolStripMenuItem.Name = "NewResourceToolStripMenuItem";
|
||||
this.NewResourceToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
|
||||
this.NewResourceToolStripMenuItem.Text = "New resource";
|
||||
this.NewResourceToolStripMenuItem.Click += new System.EventHandler(this.NewResourceToolStripMenuItem_Click);
|
||||
//
|
||||
// EditResourceToolStripMenuItem
|
||||
//
|
||||
this.EditResourceToolStripMenuItem.Name = "EditResourceToolStripMenuItem";
|
||||
this.EditResourceToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
|
||||
this.EditResourceToolStripMenuItem.Text = "Edit resource";
|
||||
this.EditResourceToolStripMenuItem.Click += new System.EventHandler(this.EditResourceToolStripMenuItem_Click);
|
||||
//
|
||||
// DeleteResourceToolStripMenuItem
|
||||
//
|
||||
this.DeleteResourceToolStripMenuItem.Name = "DeleteResourceToolStripMenuItem";
|
||||
this.DeleteResourceToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
|
||||
this.DeleteResourceToolStripMenuItem.Text = "Delete resource";
|
||||
this.DeleteResourceToolStripMenuItem.Click += new System.EventHandler(this.DeleteResourceToolStripMenuItem_Click);
|
||||
//
|
||||
// AdminToolStripDropDownButton
|
||||
//
|
||||
this.AdminToolStripDropDownButton.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.EditRolesToolStripMenuItem});
|
||||
this.AdminToolStripDropDownButton.Image = ((System.Drawing.Image)(resources.GetObject("AdminToolStripDropDownButton.Image")));
|
||||
this.AdminToolStripDropDownButton.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.AdminToolStripDropDownButton.Name = "AdminToolStripDropDownButton";
|
||||
this.AdminToolStripDropDownButton.Size = new System.Drawing.Size(65, 22);
|
||||
this.AdminToolStripDropDownButton.Text = "Admin";
|
||||
//
|
||||
// EditRolesToolStripMenuItem
|
||||
//
|
||||
this.EditRolesToolStripMenuItem.Name = "EditRolesToolStripMenuItem";
|
||||
this.EditRolesToolStripMenuItem.Size = new System.Drawing.Size(118, 22);
|
||||
this.EditRolesToolStripMenuItem.Text = "Edit roles";
|
||||
this.EditRolesToolStripMenuItem.Click += new System.EventHandler(this.EditRolesToolStripMenuItem_Click);
|
||||
//
|
||||
// LoginToolStripLabel
|
||||
//
|
||||
this.LoginToolStripLabel.Name = "LoginToolStripLabel";
|
||||
this.LoginToolStripLabel.Size = new System.Drawing.Size(70, 22);
|
||||
this.LoginToolStripLabel.Text = "Not logged in";
|
||||
//
|
||||
// LoginToolStripButton
|
||||
//
|
||||
this.LoginToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||
this.LoginToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("LoginToolStripButton.Image")));
|
||||
this.LoginToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.LoginToolStripButton.Name = "LoginToolStripButton";
|
||||
this.LoginToolStripButton.Size = new System.Drawing.Size(36, 22);
|
||||
this.LoginToolStripButton.Text = "Login";
|
||||
this.LoginToolStripButton.Click += new System.EventHandler(this.LoginToolStripButton_Click);
|
||||
//
|
||||
// DocumentsToolStripDropDownButton
|
||||
//
|
||||
this.DocumentsToolStripDropDownButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||
this.DocumentsToolStripDropDownButton.Image = ((System.Drawing.Image)(resources.GetObject("DocumentsToolStripDropDownButton.Image")));
|
||||
this.DocumentsToolStripDropDownButton.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.DocumentsToolStripDropDownButton.Name = "DocumentsToolStripDropDownButton";
|
||||
this.DocumentsToolStripDropDownButton.Size = new System.Drawing.Size(73, 22);
|
||||
this.DocumentsToolStripDropDownButton.Text = "Documents";
|
||||
this.DocumentsToolStripDropDownButton.DropDownOpening += new System.EventHandler(this.DocumentsToolStripDropDownButton_DropDownOpening);
|
||||
//
|
||||
// Panel1
|
||||
//
|
||||
this.Panel1.BackColor = System.Drawing.SystemColors.ControlDark;
|
||||
this.Panel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.Panel1.Location = new System.Drawing.Point(0, 25);
|
||||
this.Panel1.Name = "Panel1";
|
||||
this.Panel1.Size = new System.Drawing.Size(827, 393);
|
||||
this.Panel1.TabIndex = 2;
|
||||
//
|
||||
// StatusStrip1
|
||||
//
|
||||
this.StatusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.StatusLabel});
|
||||
this.StatusStrip1.Location = new System.Drawing.Point(0, 396);
|
||||
this.StatusStrip1.Name = "StatusStrip1";
|
||||
this.StatusStrip1.Size = new System.Drawing.Size(827, 22);
|
||||
this.StatusStrip1.TabIndex = 3;
|
||||
this.StatusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// StatusLabel
|
||||
//
|
||||
this.StatusLabel.Name = "StatusLabel";
|
||||
this.StatusLabel.Size = new System.Drawing.Size(0, 17);
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(827, 418);
|
||||
this.Controls.Add(this.StatusStrip1);
|
||||
this.Controls.Add(this.Panel1);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Name = "MainForm";
|
||||
this.Text = "Project Tracker";
|
||||
this.Load += new System.EventHandler(this.MainForm_Load);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.StatusStrip1.ResumeLayout(false);
|
||||
this.StatusStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
internal System.Windows.Forms.ToolStrip toolStrip1;
|
||||
internal System.Windows.Forms.ToolStripDropDownButton ProjectsStripDropDownButton1;
|
||||
internal System.Windows.Forms.ToolStripMenuItem NewProjectToolStripMenuItem;
|
||||
internal System.Windows.Forms.ToolStripMenuItem EditProjectToolStripMenuItem;
|
||||
internal System.Windows.Forms.ToolStripMenuItem DeleteProjectToolStripMenuItem;
|
||||
internal System.Windows.Forms.ToolStripLabel LoginToolStripLabel;
|
||||
internal System.Windows.Forms.ToolStripButton LoginToolStripButton;
|
||||
internal System.Windows.Forms.ToolStripDropDownButton ResourcesToolStripDropDownButton;
|
||||
internal System.Windows.Forms.ToolStripMenuItem NewResourceToolStripMenuItem;
|
||||
internal System.Windows.Forms.ToolStripMenuItem EditResourceToolStripMenuItem;
|
||||
internal System.Windows.Forms.ToolStripMenuItem DeleteResourceToolStripMenuItem;
|
||||
internal System.Windows.Forms.ToolStripDropDownButton AdminToolStripDropDownButton;
|
||||
internal System.Windows.Forms.ToolStripMenuItem EditRolesToolStripMenuItem;
|
||||
internal System.Windows.Forms.ToolStripDropDownButton DocumentsToolStripDropDownButton;
|
||||
internal System.Windows.Forms.Panel Panel1;
|
||||
internal System.Windows.Forms.StatusStrip StatusStrip1;
|
||||
internal System.Windows.Forms.ToolStripStatusLabel StatusLabel;
|
||||
}
|
||||
}
|
@@ -0,0 +1,462 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using ProjectTracker.Library;
|
||||
|
||||
namespace PTWin
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
_main = this;
|
||||
}
|
||||
|
||||
private static MainForm _main;
|
||||
|
||||
internal static MainForm Instance
|
||||
{
|
||||
get { return _main; }
|
||||
}
|
||||
|
||||
private void MainForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (Csla.ApplicationContext.AuthenticationType == "Windows")
|
||||
AppDomain.CurrentDomain.SetPrincipalPolicy(
|
||||
System.Security.Principal.PrincipalPolicy.WindowsPrincipal);
|
||||
else
|
||||
DoLogin();
|
||||
if (DocumentCount == 0)
|
||||
this.DocumentsToolStripDropDownButton.Enabled = false;
|
||||
ApplyAuthorizationRules();
|
||||
}
|
||||
|
||||
#region Projects
|
||||
|
||||
private void NewProjectToolStripMenuItem_Click(
|
||||
object sender, EventArgs e)
|
||||
{
|
||||
using (StatusBusy busy =
|
||||
new StatusBusy("Creating project..."))
|
||||
{
|
||||
AddWinPart(new ProjectEdit(Project.NewProject()));
|
||||
}
|
||||
}
|
||||
|
||||
private void EditProjectToolStripMenuItem_Click(
|
||||
object sender, EventArgs e)
|
||||
{
|
||||
using (ProjectSelect dlg = new ProjectSelect())
|
||||
{
|
||||
dlg.Text = "Edit Project";
|
||||
if (dlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
ShowEditProject(dlg.ProjectId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ShowEditProject(Guid projectId)
|
||||
{
|
||||
// see if this project is already loaded
|
||||
foreach (Control ctl in Panel1.Controls)
|
||||
{
|
||||
if (ctl is ProjectEdit)
|
||||
{
|
||||
ProjectEdit part = (ProjectEdit)ctl;
|
||||
if (part.Project.Id.Equals(projectId))
|
||||
{
|
||||
// project already loaded so just
|
||||
// display the existing winpart
|
||||
ShowWinPart(part);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// the project wasn't already loaded
|
||||
// so load it and display the new winpart
|
||||
using (StatusBusy busy = new StatusBusy("Loading project..."))
|
||||
{
|
||||
try
|
||||
{
|
||||
AddWinPart(new ProjectEdit(Project.GetProject(projectId)));
|
||||
}
|
||||
catch (Csla.DataPortalException ex)
|
||||
{
|
||||
MessageBox.Show(ex.BusinessException.ToString(),
|
||||
"Error loading", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(),
|
||||
"Error loading", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void DeleteProjectToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
ProjectSelect dlg = new ProjectSelect();
|
||||
dlg.Text = "Delete Project";
|
||||
if (dlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
// get the project id
|
||||
Guid projectId = dlg.ProjectId;
|
||||
|
||||
if (MessageBox.Show("Are you sure?", "Delete project",
|
||||
MessageBoxButtons.YesNo, MessageBoxIcon.Question,
|
||||
MessageBoxDefaultButton.Button2) == DialogResult.Yes)
|
||||
{
|
||||
using (StatusBusy busy = new StatusBusy("Deleting project..."))
|
||||
{
|
||||
try
|
||||
{
|
||||
Project.DeleteProject(projectId);
|
||||
}
|
||||
catch (Csla.DataPortalException ex)
|
||||
{
|
||||
MessageBox.Show(ex.BusinessException.ToString(),
|
||||
"Error deleting", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(),
|
||||
"Error deleting", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Resources
|
||||
|
||||
private void NewResourceToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (StatusBusy busy = new StatusBusy("Creating resource..."))
|
||||
{
|
||||
AddWinPart(new ResourceEdit(Resource.NewResource()));
|
||||
}
|
||||
}
|
||||
|
||||
private void EditResourceToolStripMenuItem_Click(
|
||||
object sender, EventArgs e)
|
||||
{
|
||||
ResourceSelect dlg = new ResourceSelect();
|
||||
dlg.Text = "Edit Resource";
|
||||
if (dlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
// get the resource id
|
||||
ShowEditResource(dlg.ResourceId);
|
||||
}
|
||||
}
|
||||
|
||||
public void ShowEditResource(int resourceId)
|
||||
{
|
||||
// see if this resource is already loaded
|
||||
foreach (Control ctl in Panel1.Controls)
|
||||
{
|
||||
if (ctl is ResourceEdit)
|
||||
{
|
||||
ResourceEdit part = (ResourceEdit)ctl;
|
||||
if (part.Resource.Id.Equals(resourceId))
|
||||
{
|
||||
// resource already loaded so just
|
||||
// display the existing winpart
|
||||
ShowWinPart(part);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// the resource wasn't already loaded
|
||||
// so load it and display the new winpart
|
||||
using (StatusBusy busy = new StatusBusy("Loading resource..."))
|
||||
{
|
||||
try
|
||||
{
|
||||
AddWinPart(new ResourceEdit(Resource.GetResource(resourceId)));
|
||||
}
|
||||
catch (Csla.DataPortalException ex)
|
||||
{
|
||||
MessageBox.Show(ex.BusinessException.ToString(),
|
||||
"Error loading", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(),
|
||||
"Error loading", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void DeleteResourceToolStripMenuItem_Click(
|
||||
object sender, EventArgs e)
|
||||
{
|
||||
ResourceSelect dlg = new ResourceSelect();
|
||||
dlg.Text = "Delete Resource";
|
||||
if (dlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
// get the resource id
|
||||
int resourceId = dlg.ResourceId;
|
||||
|
||||
if (MessageBox.Show("Are you sure?", "Delete resource",
|
||||
MessageBoxButtons.YesNo, MessageBoxIcon.Question,
|
||||
MessageBoxDefaultButton.Button2) == DialogResult.Yes)
|
||||
{
|
||||
using (StatusBusy busy =
|
||||
new StatusBusy("Deleting resource..."))
|
||||
{
|
||||
try
|
||||
{
|
||||
Resource.DeleteResource(resourceId);
|
||||
}
|
||||
catch (Csla.DataPortalException ex)
|
||||
{
|
||||
MessageBox.Show(ex.BusinessException.ToString(),
|
||||
"Error deleting", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(),
|
||||
"Error deleting", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Roles
|
||||
|
||||
private void EditRolesToolStripMenuItem_Click(
|
||||
object sender, EventArgs e)
|
||||
{
|
||||
// see if this form is already loaded
|
||||
foreach (Control ctl in Panel1.Controls)
|
||||
{
|
||||
if (ctl is RolesEdit)
|
||||
{
|
||||
ShowWinPart((WinPart)ctl);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// it wasn't already loaded, so show it.
|
||||
AddWinPart(new RolesEdit());
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ApplyAuthorizationRules
|
||||
|
||||
private void ApplyAuthorizationRules()
|
||||
{
|
||||
// Project menu
|
||||
this.NewProjectToolStripMenuItem.Enabled =
|
||||
Project.CanAddObject();
|
||||
this.EditProjectToolStripMenuItem.Enabled =
|
||||
Project.CanGetObject();
|
||||
if (Project.CanEditObject())
|
||||
this.EditProjectToolStripMenuItem.Text =
|
||||
"Edit project";
|
||||
else
|
||||
this.EditProjectToolStripMenuItem.Text =
|
||||
"View project";
|
||||
this.DeleteProjectToolStripMenuItem.Enabled =
|
||||
Project.CanDeleteObject();
|
||||
|
||||
// Resource menu
|
||||
this.NewResourceToolStripMenuItem.Enabled =
|
||||
Resource.CanAddObject();
|
||||
this.EditResourceToolStripMenuItem.Enabled =
|
||||
Resource.CanGetObject();
|
||||
if (Resource.CanEditObject())
|
||||
this.EditResourceToolStripMenuItem.Text =
|
||||
"Edit resource";
|
||||
else
|
||||
this.EditResourceToolStripMenuItem.Text =
|
||||
"View resource";
|
||||
this.DeleteResourceToolStripMenuItem.Enabled =
|
||||
Resource.CanDeleteObject();
|
||||
|
||||
// Admin menu
|
||||
this.EditRolesToolStripMenuItem.Enabled =
|
||||
ProjectTracker.Library.Admin.Roles.CanEditObject();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Login/Logout
|
||||
|
||||
private void LoginToolStripButton_Click(
|
||||
object sender, EventArgs e)
|
||||
{
|
||||
DoLogin();
|
||||
}
|
||||
|
||||
private void DoLogin()
|
||||
{
|
||||
ProjectTracker.Library.Security.PTPrincipal.Logout();
|
||||
|
||||
if (this.LoginToolStripButton.Text == "Login")
|
||||
{
|
||||
LoginForm loginForm = new LoginForm();
|
||||
loginForm.ShowDialog(this);
|
||||
}
|
||||
|
||||
System.Security.Principal.IPrincipal user =
|
||||
Csla.ApplicationContext.User;
|
||||
|
||||
if (user.Identity.IsAuthenticated)
|
||||
{
|
||||
this.LoginToolStripLabel.Text = "Logged in as " +
|
||||
user.Identity.Name;
|
||||
this.LoginToolStripButton.Text = "Logout";
|
||||
}
|
||||
else
|
||||
{
|
||||
this.LoginToolStripLabel.Text = "Not logged in";
|
||||
this.LoginToolStripButton.Text = "Login";
|
||||
}
|
||||
|
||||
// reset menus, etc.
|
||||
ApplyAuthorizationRules();
|
||||
|
||||
// notify all documents
|
||||
foreach (Control ctl in Panel1.Controls)
|
||||
if (ctl is WinPart)
|
||||
((WinPart)ctl).OnCurrentPrincipalChanged(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region WinPart handling
|
||||
|
||||
/// <summary>
|
||||
/// Add a new WinPart control to the
|
||||
/// list of available documents and
|
||||
/// make it the active WinPart.
|
||||
/// </summary>
|
||||
/// <param name="part">The WinPart control to add and display.</param>
|
||||
private void AddWinPart(WinPart part)
|
||||
{
|
||||
part.CloseWinPart += new EventHandler(CloseWinPart);
|
||||
part.BackColor = toolStrip1.BackColor;
|
||||
Panel1.Controls.Add(part);
|
||||
this.DocumentsToolStripDropDownButton.Enabled = true;
|
||||
ShowWinPart(part);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Make the specified WinPart the
|
||||
/// active, displayed control.
|
||||
/// </summary>
|
||||
/// <param name="part">The WinPart control to display.</param>
|
||||
private void ShowWinPart(WinPart part)
|
||||
{
|
||||
part.Dock = DockStyle.Fill;
|
||||
part.Visible = true;
|
||||
part.BringToFront();
|
||||
this.Text = "Project Tracker - " + part.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Populate the Documents dropdown list.
|
||||
/// </summary>
|
||||
private void DocumentsToolStripDropDownButton_DropDownOpening(
|
||||
object sender, EventArgs e)
|
||||
{
|
||||
ToolStripItemCollection items =
|
||||
DocumentsToolStripDropDownButton.DropDownItems;
|
||||
foreach (ToolStripItem item in items)
|
||||
item.Click -= new EventHandler(DocumentClick);
|
||||
items.Clear();
|
||||
foreach (Control ctl in Panel1.Controls)
|
||||
if (ctl is WinPart)
|
||||
{
|
||||
ToolStripItem item = new ToolStripMenuItem();
|
||||
item.Text = ((WinPart)ctl).ToString();
|
||||
item.Tag = ctl;
|
||||
item.Click += new EventHandler(DocumentClick);
|
||||
items.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Make selected WinPart the active control.
|
||||
/// </summary>
|
||||
private void DocumentClick(object sender, EventArgs e)
|
||||
{
|
||||
WinPart ctl = (WinPart)((ToolStripItem)sender).Tag;
|
||||
ShowWinPart(ctl);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a count of the number of loaded
|
||||
/// documents.
|
||||
/// </summary>
|
||||
public int DocumentCount
|
||||
{
|
||||
get
|
||||
{
|
||||
int count = 0;
|
||||
foreach (Control ctl in Panel1.Controls)
|
||||
if (ctl is WinPart)
|
||||
count++;
|
||||
return count;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles event from WinPart when that
|
||||
/// WinPart is closing.
|
||||
/// </summary>
|
||||
private void CloseWinPart(object sender, EventArgs e)
|
||||
{
|
||||
WinPart part = (WinPart)sender;
|
||||
part.CloseWinPart -= new EventHandler(CloseWinPart);
|
||||
part.Visible = false;
|
||||
Panel1.Controls.Remove(part);
|
||||
part.Dispose();
|
||||
if (DocumentCount == 0)
|
||||
{
|
||||
this.DocumentsToolStripDropDownButton.Enabled = false;
|
||||
this.Text = "Project Tracker";
|
||||
}
|
||||
else
|
||||
{
|
||||
// Find the first WinPart control and set
|
||||
// the main form's Text property accordingly.
|
||||
// This works because the first WinPart
|
||||
// is the active one.
|
||||
foreach (Control ctl in Panel1.Controls)
|
||||
{
|
||||
if (ctl is WinPart)
|
||||
{
|
||||
this.Text = "Project Tracker - " + ((WinPart)ctl).ToString();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@@ -0,0 +1,403 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<root>
|
||||
|
||||
<!--
|
||||
|
||||
Microsoft ResX Schema
|
||||
|
||||
|
||||
|
||||
Version 2.0
|
||||
|
||||
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
|
||||
various data types are done through the TypeConverter classes
|
||||
|
||||
associated with the data types.
|
||||
|
||||
|
||||
|
||||
Example:
|
||||
|
||||
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
|
||||
<resheader name="version">2.0</resheader>
|
||||
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
|
||||
</data>
|
||||
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
|
||||
<comment>This is a comment</comment>
|
||||
|
||||
</data>
|
||||
|
||||
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
|
||||
name/value pairs.
|
||||
|
||||
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
|
||||
Classes that don't support this are serialized and stored with the
|
||||
|
||||
mimetype set.
|
||||
|
||||
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
|
||||
read any of the formats listed below.
|
||||
|
||||
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
|
||||
value : The object must be serialized with
|
||||
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
|
||||
value : The object must be serialized with
|
||||
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
|
||||
value : The object must be serialized into a byte array
|
||||
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
-->
|
||||
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
|
||||
<xsd:complexType>
|
||||
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
|
||||
<xsd:element name="metadata">
|
||||
|
||||
<xsd:complexType>
|
||||
|
||||
<xsd:sequence>
|
||||
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
|
||||
</xsd:sequence>
|
||||
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
|
||||
<xsd:attribute ref="xml:space" />
|
||||
|
||||
</xsd:complexType>
|
||||
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="assembly">
|
||||
|
||||
<xsd:complexType>
|
||||
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
|
||||
</xsd:complexType>
|
||||
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="data">
|
||||
|
||||
<xsd:complexType>
|
||||
|
||||
<xsd:sequence>
|
||||
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
|
||||
</xsd:sequence>
|
||||
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
|
||||
<xsd:attribute ref="xml:space" />
|
||||
|
||||
</xsd:complexType>
|
||||
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="resheader">
|
||||
|
||||
<xsd:complexType>
|
||||
|
||||
<xsd:sequence>
|
||||
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
|
||||
</xsd:sequence>
|
||||
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
|
||||
</xsd:complexType>
|
||||
|
||||
</xsd:element>
|
||||
|
||||
</xsd:choice>
|
||||
|
||||
</xsd:complexType>
|
||||
|
||||
</xsd:element>
|
||||
|
||||
</xsd:schema>
|
||||
|
||||
<resheader name="resmimetype">
|
||||
|
||||
<value>text/microsoft-resx</value>
|
||||
|
||||
</resheader>
|
||||
|
||||
<resheader name="version">
|
||||
|
||||
<value>2.0</value>
|
||||
|
||||
</resheader>
|
||||
|
||||
<resheader name="reader">
|
||||
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
|
||||
</resheader>
|
||||
|
||||
<resheader name="writer">
|
||||
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
|
||||
</resheader>
|
||||
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
|
||||
<value>17, 17</value>
|
||||
|
||||
</metadata>
|
||||
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
|
||||
<data name="ProjectsStripDropDownButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
|
||||
<value>
|
||||
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
|
||||
</value>
|
||||
|
||||
</data>
|
||||
|
||||
<data name="ResourcesToolStripDropDownButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
|
||||
<value>
|
||||
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
|
||||
</value>
|
||||
|
||||
</data>
|
||||
|
||||
<data name="AdminToolStripDropDownButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
|
||||
<value>
|
||||
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
|
||||
</value>
|
||||
|
||||
</data>
|
||||
|
||||
<data name="LoginToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
|
||||
<value>
|
||||
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
|
||||
</value>
|
||||
|
||||
</data>
|
||||
|
||||
<data name="DocumentsToolStripDropDownButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
|
||||
<value>
|
||||
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
|
||||
</value>
|
||||
|
||||
</data>
|
||||
|
||||
<metadata name="StatusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
|
||||
<value>116, 17</value>
|
||||
|
||||
</metadata>
|
||||
|
||||
</root>
|
@@ -0,0 +1,164 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.50727</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{DAB85BA2-86A3-4D3B-8D34-324D939D952C}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>PTWin</RootNamespace>
|
||||
<AssemblyName>PTWin</AssemblyName>
|
||||
<StartupObject>PTWin.Program</StartupObject>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Csla, Version=2.0.0.0, Culture=neutral, PublicKeyToken=93be5fdc093e4c30, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\csla20cs\Csla\bin\Debug\Csla.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="LoginForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LoginForm.Designer.cs">
|
||||
<DependentUpon>LoginForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="MainForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MainForm.Designer.cs">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="ProjectEdit.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ProjectEdit.Designer.cs">
|
||||
<DependentUpon>ProjectEdit.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ProjectSelect.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ProjectSelect.Designer.cs">
|
||||
<DependentUpon>ProjectSelect.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="LoginForm.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<DependentUpon>LoginForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="MainForm.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ProjectEdit.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<DependentUpon>ProjectEdit.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ProjectSelect.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<DependentUpon>ProjectSelect.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ResourceEdit.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<DependentUpon>ResourceEdit.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ResourceSelect.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<DependentUpon>ResourceSelect.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="RolesEdit.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<DependentUpon>RolesEdit.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="App.config" />
|
||||
<None Include="Properties\DataSources\ProjectTracker.Library.Admin.Roles.datasource" />
|
||||
<None Include="Properties\DataSources\ProjectTracker.Library.Project.datasource" />
|
||||
<None Include="Properties\DataSources\ProjectTracker.Library.ProjectList.datasource" />
|
||||
<None Include="Properties\DataSources\ProjectTracker.Library.Resource.datasource" />
|
||||
<None Include="Properties\DataSources\ProjectTracker.Library.ResourceList.datasource" />
|
||||
<None Include="Properties\DataSources\ProjectTracker.Library.RoleList.datasource" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<Compile Include="ResourceEdit.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ResourceEdit.Designer.cs">
|
||||
<DependentUpon>ResourceEdit.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ResourceSelect.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ResourceSelect.Designer.cs">
|
||||
<DependentUpon>ResourceSelect.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="RolesEdit.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="RolesEdit.Designer.cs">
|
||||
<DependentUpon>RolesEdit.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="StatusBusy.cs" />
|
||||
<Compile Include="WinPart.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="WinPart.Designer.cs">
|
||||
<DependentUpon>WinPart.cs</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ProjectTracker.Library\ProjectTracker.Library.csproj">
|
||||
<Project>{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}</Project>
|
||||
<Name>ProjectTracker.Library</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace PTWin
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new MainForm());
|
||||
}
|
||||
}
|
||||
}
|
414
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/ProjectEdit.Designer.cs
generated
Normal file
414
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/ProjectEdit.Designer.cs
generated
Normal file
@@ -0,0 +1,414 @@
|
||||
namespace PTWin
|
||||
{
|
||||
partial class ProjectEdit
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.Windows.Forms.Label DescriptionLabel;
|
||||
System.Windows.Forms.Label EndedLabel;
|
||||
System.Windows.Forms.Label IdLabel;
|
||||
System.Windows.Forms.Label NameLabel;
|
||||
System.Windows.Forms.Label StartedLabel;
|
||||
this.CloseButton = new System.Windows.Forms.Button();
|
||||
this.ApplyButton = new System.Windows.Forms.Button();
|
||||
this.Cancel_Button = new System.Windows.Forms.Button();
|
||||
this.OKButton = new System.Windows.Forms.Button();
|
||||
this.GroupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.UnassignButton = new System.Windows.Forms.Button();
|
||||
this.AssignButton = new System.Windows.Forms.Button();
|
||||
this.ResourcesDataGridView = new System.Windows.Forms.DataGridView();
|
||||
this.ResourceId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.FullName = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
this.Role = new System.Windows.Forms.DataGridViewComboBoxColumn();
|
||||
this.roleListBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.assignedDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.resourcesBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.projectBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.DescriptionTextBox = new System.Windows.Forms.TextBox();
|
||||
this.EndedTextBox = new System.Windows.Forms.TextBox();
|
||||
this.IdLabel1 = new System.Windows.Forms.Label();
|
||||
this.NameTextBox = new System.Windows.Forms.TextBox();
|
||||
this.StartedTextBox = new System.Windows.Forms.TextBox();
|
||||
this.ErrorProvider1 = new System.Windows.Forms.ErrorProvider(this.components);
|
||||
this.ReadWriteAuthorization1 = new Csla.Windows.ReadWriteAuthorization(this.components);
|
||||
this.BindingSourceRefresh1 = new Csla.Windows.BindingSourceRefresh(this.components);
|
||||
DescriptionLabel = new System.Windows.Forms.Label();
|
||||
EndedLabel = new System.Windows.Forms.Label();
|
||||
IdLabel = new System.Windows.Forms.Label();
|
||||
NameLabel = new System.Windows.Forms.Label();
|
||||
StartedLabel = new System.Windows.Forms.Label();
|
||||
this.GroupBox1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ResourcesDataGridView)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.roleListBindingSource)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.resourcesBindingSource)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.projectBindingSource)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ErrorProvider1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// DescriptionLabel
|
||||
//
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(DescriptionLabel, false);
|
||||
DescriptionLabel.AutoSize = true;
|
||||
DescriptionLabel.Location = new System.Drawing.Point(12, 120);
|
||||
DescriptionLabel.Name = "DescriptionLabel";
|
||||
DescriptionLabel.Size = new System.Drawing.Size(63, 13);
|
||||
DescriptionLabel.TabIndex = 31;
|
||||
DescriptionLabel.Text = "Description:";
|
||||
//
|
||||
// EndedLabel
|
||||
//
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(EndedLabel, false);
|
||||
EndedLabel.AutoSize = true;
|
||||
EndedLabel.Location = new System.Drawing.Point(12, 94);
|
||||
EndedLabel.Name = "EndedLabel";
|
||||
EndedLabel.Size = new System.Drawing.Size(41, 13);
|
||||
EndedLabel.TabIndex = 33;
|
||||
EndedLabel.Text = "Ended:";
|
||||
//
|
||||
// IdLabel
|
||||
//
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(IdLabel, false);
|
||||
IdLabel.AutoSize = true;
|
||||
IdLabel.Location = new System.Drawing.Point(12, 13);
|
||||
IdLabel.Name = "IdLabel";
|
||||
IdLabel.Size = new System.Drawing.Size(19, 13);
|
||||
IdLabel.TabIndex = 35;
|
||||
IdLabel.Text = "Id:";
|
||||
//
|
||||
// NameLabel
|
||||
//
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(NameLabel, false);
|
||||
NameLabel.AutoSize = true;
|
||||
NameLabel.Location = new System.Drawing.Point(12, 42);
|
||||
NameLabel.Name = "NameLabel";
|
||||
NameLabel.Size = new System.Drawing.Size(38, 13);
|
||||
NameLabel.TabIndex = 37;
|
||||
NameLabel.Text = "Name:";
|
||||
//
|
||||
// StartedLabel
|
||||
//
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(StartedLabel, false);
|
||||
StartedLabel.AutoSize = true;
|
||||
StartedLabel.Location = new System.Drawing.Point(12, 68);
|
||||
StartedLabel.Name = "StartedLabel";
|
||||
StartedLabel.Size = new System.Drawing.Size(44, 13);
|
||||
StartedLabel.TabIndex = 39;
|
||||
StartedLabel.Text = "Started:";
|
||||
//
|
||||
// CloseButton
|
||||
//
|
||||
this.CloseButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.CloseButton, false);
|
||||
this.CloseButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.CloseButton.Location = new System.Drawing.Point(578, 100);
|
||||
this.CloseButton.Name = "CloseButton";
|
||||
this.CloseButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.CloseButton.TabIndex = 45;
|
||||
this.CloseButton.Text = "Close";
|
||||
this.CloseButton.UseVisualStyleBackColor = true;
|
||||
this.CloseButton.Click += new System.EventHandler(this.CloseButton_Click);
|
||||
//
|
||||
// ApplyButton
|
||||
//
|
||||
this.ApplyButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.ApplyButton, false);
|
||||
this.ApplyButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.ApplyButton.Location = new System.Drawing.Point(578, 42);
|
||||
this.ApplyButton.Name = "ApplyButton";
|
||||
this.ApplyButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.ApplyButton.TabIndex = 44;
|
||||
this.ApplyButton.Text = "Apply";
|
||||
this.ApplyButton.UseVisualStyleBackColor = true;
|
||||
this.ApplyButton.Click += new System.EventHandler(this.ApplyButton_Click);
|
||||
//
|
||||
// Cancel_Button
|
||||
//
|
||||
this.Cancel_Button.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.Cancel_Button, false);
|
||||
this.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.Cancel_Button.Location = new System.Drawing.Point(578, 71);
|
||||
this.Cancel_Button.Name = "Cancel_Button";
|
||||
this.Cancel_Button.Size = new System.Drawing.Size(75, 23);
|
||||
this.Cancel_Button.TabIndex = 43;
|
||||
this.Cancel_Button.Text = "Cancel";
|
||||
this.Cancel_Button.UseVisualStyleBackColor = true;
|
||||
this.Cancel_Button.Click += new System.EventHandler(this.Cancel_Button_Click);
|
||||
//
|
||||
// OKButton
|
||||
//
|
||||
this.OKButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.OKButton, false);
|
||||
this.OKButton.Location = new System.Drawing.Point(578, 13);
|
||||
this.OKButton.Name = "OKButton";
|
||||
this.OKButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.OKButton.TabIndex = 42;
|
||||
this.OKButton.Text = "OK";
|
||||
this.OKButton.UseVisualStyleBackColor = true;
|
||||
this.OKButton.Click += new System.EventHandler(this.OKButton_Click);
|
||||
//
|
||||
// GroupBox1
|
||||
//
|
||||
this.GroupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.GroupBox1, false);
|
||||
this.GroupBox1.Controls.Add(this.UnassignButton);
|
||||
this.GroupBox1.Controls.Add(this.AssignButton);
|
||||
this.GroupBox1.Controls.Add(this.ResourcesDataGridView);
|
||||
this.GroupBox1.Location = new System.Drawing.Point(81, 231);
|
||||
this.GroupBox1.Name = "GroupBox1";
|
||||
this.GroupBox1.Size = new System.Drawing.Size(460, 210);
|
||||
this.GroupBox1.TabIndex = 41;
|
||||
this.GroupBox1.TabStop = false;
|
||||
this.GroupBox1.Text = "Resources";
|
||||
//
|
||||
// UnassignButton
|
||||
//
|
||||
this.UnassignButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.UnassignButton, false);
|
||||
this.UnassignButton.Location = new System.Drawing.Point(379, 48);
|
||||
this.UnassignButton.Name = "UnassignButton";
|
||||
this.UnassignButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.UnassignButton.TabIndex = 12;
|
||||
this.UnassignButton.Text = "Unassign";
|
||||
this.UnassignButton.UseVisualStyleBackColor = true;
|
||||
this.UnassignButton.Click += new System.EventHandler(this.UnassignButton_Click);
|
||||
//
|
||||
// AssignButton
|
||||
//
|
||||
this.AssignButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.AssignButton, false);
|
||||
this.AssignButton.Location = new System.Drawing.Point(379, 19);
|
||||
this.AssignButton.Name = "AssignButton";
|
||||
this.AssignButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.AssignButton.TabIndex = 11;
|
||||
this.AssignButton.Text = "Assign";
|
||||
this.AssignButton.UseVisualStyleBackColor = true;
|
||||
this.AssignButton.Click += new System.EventHandler(this.AssignButton_Click);
|
||||
//
|
||||
// ResourcesDataGridView
|
||||
//
|
||||
this.ResourcesDataGridView.AllowUserToAddRows = false;
|
||||
this.ResourcesDataGridView.AllowUserToDeleteRows = false;
|
||||
this.ResourcesDataGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.ResourcesDataGridView, false);
|
||||
this.ResourcesDataGridView.AutoGenerateColumns = false;
|
||||
this.ResourcesDataGridView.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
|
||||
this.ResourcesDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.ResourceId,
|
||||
this.FullName,
|
||||
this.Role,
|
||||
this.assignedDataGridViewTextBoxColumn});
|
||||
this.ResourcesDataGridView.DataSource = this.resourcesBindingSource;
|
||||
this.ResourcesDataGridView.Location = new System.Drawing.Point(6, 19);
|
||||
this.ResourcesDataGridView.MultiSelect = false;
|
||||
this.ResourcesDataGridView.Name = "ResourcesDataGridView";
|
||||
this.ResourcesDataGridView.RowHeadersVisible = false;
|
||||
this.ResourcesDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.ResourcesDataGridView.Size = new System.Drawing.Size(367, 185);
|
||||
this.ResourcesDataGridView.TabIndex = 10;
|
||||
this.ResourcesDataGridView.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.ResourcesDataGridView_CellContentClick);
|
||||
//
|
||||
// ResourceId
|
||||
//
|
||||
this.ResourceId.DataPropertyName = "ResourceId";
|
||||
this.ResourceId.HeaderText = "ResourceId";
|
||||
this.ResourceId.Name = "ResourceId";
|
||||
this.ResourceId.ReadOnly = true;
|
||||
this.ResourceId.Visible = false;
|
||||
this.ResourceId.Width = 87;
|
||||
//
|
||||
// FullName
|
||||
//
|
||||
this.FullName.DataPropertyName = "FullName";
|
||||
this.FullName.HeaderText = "FullName";
|
||||
this.FullName.Name = "FullName";
|
||||
this.FullName.ReadOnly = true;
|
||||
this.FullName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.FullName.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.FullName.Width = 76;
|
||||
//
|
||||
// Role
|
||||
//
|
||||
this.Role.DataPropertyName = "Role";
|
||||
this.Role.DataSource = this.roleListBindingSource;
|
||||
this.Role.DisplayMember = "Value";
|
||||
this.Role.HeaderText = "Role";
|
||||
this.Role.Name = "Role";
|
||||
this.Role.ValueMember = "Key";
|
||||
this.Role.Width = 35;
|
||||
//
|
||||
// roleListBindingSource
|
||||
//
|
||||
this.roleListBindingSource.DataSource = typeof(ProjectTracker.Library.RoleList);
|
||||
this.BindingSourceRefresh1.SetReadValuesOnChange(this.roleListBindingSource, false);
|
||||
//
|
||||
// assignedDataGridViewTextBoxColumn
|
||||
//
|
||||
this.assignedDataGridViewTextBoxColumn.DataPropertyName = "Assigned";
|
||||
this.assignedDataGridViewTextBoxColumn.HeaderText = "Assigned";
|
||||
this.assignedDataGridViewTextBoxColumn.Name = "assignedDataGridViewTextBoxColumn";
|
||||
this.assignedDataGridViewTextBoxColumn.ReadOnly = true;
|
||||
this.assignedDataGridViewTextBoxColumn.Width = 75;
|
||||
//
|
||||
// resourcesBindingSource
|
||||
//
|
||||
this.resourcesBindingSource.DataMember = "Resources";
|
||||
this.resourcesBindingSource.DataSource = this.projectBindingSource;
|
||||
this.BindingSourceRefresh1.SetReadValuesOnChange(this.resourcesBindingSource, false);
|
||||
//
|
||||
// projectBindingSource
|
||||
//
|
||||
this.projectBindingSource.DataSource = typeof(ProjectTracker.Library.Project);
|
||||
this.BindingSourceRefresh1.SetReadValuesOnChange(this.projectBindingSource, true);
|
||||
//
|
||||
// DescriptionTextBox
|
||||
//
|
||||
this.DescriptionTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.DescriptionTextBox, true);
|
||||
this.DescriptionTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.projectBindingSource, "Description", true));
|
||||
this.DescriptionTextBox.Location = new System.Drawing.Point(81, 117);
|
||||
this.DescriptionTextBox.Multiline = true;
|
||||
this.DescriptionTextBox.Name = "DescriptionTextBox";
|
||||
this.DescriptionTextBox.Size = new System.Drawing.Size(460, 108);
|
||||
this.DescriptionTextBox.TabIndex = 32;
|
||||
//
|
||||
// EndedTextBox
|
||||
//
|
||||
this.EndedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.EndedTextBox, true);
|
||||
this.EndedTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.projectBindingSource, "Ended", true));
|
||||
this.EndedTextBox.Location = new System.Drawing.Point(81, 91);
|
||||
this.EndedTextBox.Name = "EndedTextBox";
|
||||
this.EndedTextBox.Size = new System.Drawing.Size(460, 20);
|
||||
this.EndedTextBox.TabIndex = 34;
|
||||
//
|
||||
// IdLabel1
|
||||
//
|
||||
this.IdLabel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.IdLabel1, false);
|
||||
this.IdLabel1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.projectBindingSource, "Id", true));
|
||||
this.IdLabel1.Location = new System.Drawing.Point(81, 13);
|
||||
this.IdLabel1.Name = "IdLabel1";
|
||||
this.IdLabel1.Size = new System.Drawing.Size(460, 23);
|
||||
this.IdLabel1.TabIndex = 36;
|
||||
//
|
||||
// NameTextBox
|
||||
//
|
||||
this.NameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.NameTextBox, true);
|
||||
this.NameTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.projectBindingSource, "Name", true));
|
||||
this.NameTextBox.Location = new System.Drawing.Point(81, 39);
|
||||
this.NameTextBox.Name = "NameTextBox";
|
||||
this.NameTextBox.Size = new System.Drawing.Size(460, 20);
|
||||
this.NameTextBox.TabIndex = 38;
|
||||
//
|
||||
// StartedTextBox
|
||||
//
|
||||
this.StartedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.StartedTextBox, true);
|
||||
this.StartedTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.projectBindingSource, "Started", true));
|
||||
this.StartedTextBox.Location = new System.Drawing.Point(81, 65);
|
||||
this.StartedTextBox.Name = "StartedTextBox";
|
||||
this.StartedTextBox.Size = new System.Drawing.Size(460, 20);
|
||||
this.StartedTextBox.TabIndex = 40;
|
||||
//
|
||||
// ErrorProvider1
|
||||
//
|
||||
this.ErrorProvider1.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
|
||||
this.ErrorProvider1.ContainerControl = this;
|
||||
this.ErrorProvider1.DataSource = this.projectBindingSource;
|
||||
//
|
||||
// ProjectEdit
|
||||
//
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this, false);
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.CloseButton);
|
||||
this.Controls.Add(this.ApplyButton);
|
||||
this.Controls.Add(this.Cancel_Button);
|
||||
this.Controls.Add(this.OKButton);
|
||||
this.Controls.Add(this.GroupBox1);
|
||||
this.Controls.Add(DescriptionLabel);
|
||||
this.Controls.Add(this.DescriptionTextBox);
|
||||
this.Controls.Add(EndedLabel);
|
||||
this.Controls.Add(IdLabel);
|
||||
this.Controls.Add(NameLabel);
|
||||
this.Controls.Add(StartedLabel);
|
||||
this.Controls.Add(this.EndedTextBox);
|
||||
this.Controls.Add(this.IdLabel1);
|
||||
this.Controls.Add(this.NameTextBox);
|
||||
this.Controls.Add(this.StartedTextBox);
|
||||
this.Name = "ProjectEdit";
|
||||
this.Size = new System.Drawing.Size(665, 454);
|
||||
this.CurrentPrincipalChanged += new System.EventHandler(this.ProjectEdit_CurrentPrincipalChanged);
|
||||
this.GroupBox1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.ResourcesDataGridView)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.roleListBindingSource)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.resourcesBindingSource)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.projectBindingSource)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ErrorProvider1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
internal System.Windows.Forms.Button CloseButton;
|
||||
internal System.Windows.Forms.Button ApplyButton;
|
||||
internal System.Windows.Forms.Button Cancel_Button;
|
||||
internal System.Windows.Forms.Button OKButton;
|
||||
internal System.Windows.Forms.GroupBox GroupBox1;
|
||||
internal System.Windows.Forms.Button UnassignButton;
|
||||
internal System.Windows.Forms.Button AssignButton;
|
||||
internal System.Windows.Forms.DataGridView ResourcesDataGridView;
|
||||
internal System.Windows.Forms.TextBox DescriptionTextBox;
|
||||
internal System.Windows.Forms.TextBox EndedTextBox;
|
||||
internal System.Windows.Forms.Label IdLabel1;
|
||||
internal System.Windows.Forms.TextBox NameTextBox;
|
||||
internal System.Windows.Forms.TextBox StartedTextBox;
|
||||
internal Csla.Windows.ReadWriteAuthorization ReadWriteAuthorization1;
|
||||
internal System.Windows.Forms.ErrorProvider ErrorProvider1;
|
||||
internal System.Windows.Forms.BindingSource projectBindingSource;
|
||||
internal Csla.Windows.BindingSourceRefresh BindingSourceRefresh1;
|
||||
internal System.Windows.Forms.BindingSource resourcesBindingSource;
|
||||
internal System.Windows.Forms.BindingSource roleListBindingSource;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ResourceId;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn FullName;
|
||||
private System.Windows.Forms.DataGridViewComboBoxColumn Role;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn assignedDataGridViewTextBoxColumn;
|
||||
}
|
||||
}
|
@@ -0,0 +1,187 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using ProjectTracker.Library;
|
||||
|
||||
namespace PTWin
|
||||
{
|
||||
public partial class ProjectEdit : WinPart
|
||||
{
|
||||
|
||||
private Project _project;
|
||||
|
||||
public Project Project
|
||||
{
|
||||
get { return _project; }
|
||||
}
|
||||
|
||||
#region WinPart Code
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return _project.Name;
|
||||
}
|
||||
|
||||
protected internal override object GetIdValue()
|
||||
{
|
||||
return _project;
|
||||
}
|
||||
|
||||
private void ProjectEdit_CurrentPrincipalChanged(
|
||||
object sender, EventArgs e)
|
||||
{
|
||||
ApplyAuthorizationRules();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private void ApplyAuthorizationRules()
|
||||
{
|
||||
// have the controls enable/disable/etc
|
||||
this.ReadWriteAuthorization1.ResetControlAuthorization();
|
||||
|
||||
bool canEdit =
|
||||
ProjectTracker.Library.Project.CanEditObject();
|
||||
|
||||
// enable/disable appropriate buttons
|
||||
this.OKButton.Enabled = canEdit;
|
||||
this.ApplyButton.Enabled = canEdit;
|
||||
this.Cancel_Button.Enabled = canEdit;
|
||||
this.AssignButton.Enabled = canEdit;
|
||||
this.UnassignButton.Enabled = canEdit;
|
||||
|
||||
// enable/disable role column in grid
|
||||
this.ResourcesDataGridView.Columns[2].ReadOnly =
|
||||
!canEdit;
|
||||
}
|
||||
|
||||
private void SaveProject(bool rebind)
|
||||
{
|
||||
using (StatusBusy busy = new StatusBusy("Saving..."))
|
||||
{
|
||||
this.projectBindingSource.RaiseListChangedEvents = false;
|
||||
this.resourcesBindingSource.RaiseListChangedEvents = false;
|
||||
// do the save
|
||||
this.projectBindingSource.EndEdit();
|
||||
this.resourcesBindingSource.EndEdit();
|
||||
try
|
||||
{
|
||||
Project temp = _project.Clone();
|
||||
_project = temp.Save();
|
||||
if (rebind)
|
||||
{
|
||||
// rebind the UI
|
||||
this.projectBindingSource.DataSource = null;
|
||||
this.resourcesBindingSource.DataSource = this.projectBindingSource;
|
||||
this.projectBindingSource.DataSource = _project;
|
||||
ApplyAuthorizationRules();
|
||||
}
|
||||
}
|
||||
catch (Csla.DataPortalException ex)
|
||||
{
|
||||
MessageBox.Show(ex.BusinessException.ToString(),
|
||||
"Error saving", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(),
|
||||
"Error Saving", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.projectBindingSource.RaiseListChangedEvents = true;
|
||||
this.resourcesBindingSource.RaiseListChangedEvents = true;
|
||||
this.projectBindingSource.ResetBindings(false);
|
||||
this.resourcesBindingSource.ResetBindings(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ProjectEdit(Project project)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
_project = project;
|
||||
|
||||
this.roleListBindingSource.DataSource = RoleList.GetList();
|
||||
this.projectBindingSource.DataSource = _project;
|
||||
|
||||
ApplyAuthorizationRules();
|
||||
}
|
||||
|
||||
private void OKButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveProject(false);
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void ApplyButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveProject(true);
|
||||
}
|
||||
|
||||
private void Cancel_Button_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.projectBindingSource.CancelEdit();
|
||||
this.resourcesBindingSource.CancelEdit();
|
||||
}
|
||||
|
||||
private void CloseButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.projectBindingSource.CancelEdit();
|
||||
this.resourcesBindingSource.CancelEdit();
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void AssignButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
ResourceSelect dlg = new ResourceSelect();
|
||||
if (dlg.ShowDialog() == DialogResult.OK)
|
||||
try
|
||||
{
|
||||
_project.Resources.Assign(dlg.ResourceId);
|
||||
}
|
||||
catch (InvalidOperationException ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(),
|
||||
"Error Assigning", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Information);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(),
|
||||
"Error Assigning", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
}
|
||||
|
||||
private void UnassignButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (this.ResourcesDataGridView.SelectedRows.Count > 0)
|
||||
{
|
||||
int resourceId = int.Parse(
|
||||
this.ResourcesDataGridView.SelectedRows[0].
|
||||
Cells[0].Value.ToString());
|
||||
_project.Resources.Remove(resourceId);
|
||||
}
|
||||
}
|
||||
|
||||
private void ResourcesDataGridView_CellContentClick(
|
||||
object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex == 1 && e.RowIndex > -1)
|
||||
{
|
||||
int resourceId = int.Parse(
|
||||
this.ResourcesDataGridView.Rows[
|
||||
e.RowIndex].Cells[0].Value.ToString());
|
||||
MainForm.Instance.ShowEditResource(resourceId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,186 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="DescriptionLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="ReadWriteAuthorization1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>297, 17</value>
|
||||
</metadata>
|
||||
<metadata name="EndedLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="IdLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="NameLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="StartedLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="ResourceId.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="FullName.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Role.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="resourcesBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>472, 17</value>
|
||||
</metadata>
|
||||
<metadata name="ResourceId.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="FullName.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Role.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="roleListBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>645, 17</value>
|
||||
</metadata>
|
||||
<metadata name="roleListBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>645, 17</value>
|
||||
</metadata>
|
||||
<metadata name="BindingSourceRefresh1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>806, 17</value>
|
||||
</metadata>
|
||||
<metadata name="resourcesBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>472, 17</value>
|
||||
</metadata>
|
||||
<metadata name="projectBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>140, 17</value>
|
||||
</metadata>
|
||||
<metadata name="projectBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>140, 17</value>
|
||||
</metadata>
|
||||
<metadata name="ReadWriteAuthorization1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>297, 17</value>
|
||||
</metadata>
|
||||
<metadata name="ErrorProvider1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="BindingSourceRefresh1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>806, 17</value>
|
||||
</metadata>
|
||||
</root>
|
164
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/ProjectSelect.Designer.cs
generated
Normal file
164
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/ProjectSelect.Designer.cs
generated
Normal file
@@ -0,0 +1,164 @@
|
||||
namespace PTWin
|
||||
{
|
||||
partial class ProjectSelect
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.GetListButton = new System.Windows.Forms.Button();
|
||||
this.NameTextBox = new System.Windows.Forms.TextBox();
|
||||
this.NameLabel = new System.Windows.Forms.Label();
|
||||
this.ProjectListListBox = new System.Windows.Forms.ListBox();
|
||||
this.projectListBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.TableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.OK_Button = new System.Windows.Forms.Button();
|
||||
this.Cancel_Button = new System.Windows.Forms.Button();
|
||||
((System.ComponentModel.ISupportInitialize)(this.projectListBindingSource)).BeginInit();
|
||||
this.TableLayoutPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// GetListButton
|
||||
//
|
||||
this.GetListButton.Location = new System.Drawing.Point(356, 9);
|
||||
this.GetListButton.Name = "GetListButton";
|
||||
this.GetListButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.GetListButton.TabIndex = 10;
|
||||
this.GetListButton.Text = "Get list";
|
||||
this.GetListButton.UseVisualStyleBackColor = true;
|
||||
this.GetListButton.Click += new System.EventHandler(this.GetListButton_Click);
|
||||
//
|
||||
// NameTextBox
|
||||
//
|
||||
this.NameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.NameTextBox.Location = new System.Drawing.Point(83, 9);
|
||||
this.NameTextBox.Name = "NameTextBox";
|
||||
this.NameTextBox.Size = new System.Drawing.Size(267, 20);
|
||||
this.NameTextBox.TabIndex = 9;
|
||||
//
|
||||
// NameLabel
|
||||
//
|
||||
this.NameLabel.AutoSize = true;
|
||||
this.NameLabel.Location = new System.Drawing.Point(12, 12);
|
||||
this.NameLabel.Name = "NameLabel";
|
||||
this.NameLabel.Size = new System.Drawing.Size(38, 13);
|
||||
this.NameLabel.TabIndex = 8;
|
||||
this.NameLabel.Text = "Name:";
|
||||
//
|
||||
// ProjectListListBox
|
||||
//
|
||||
this.ProjectListListBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ProjectListListBox.DataSource = this.projectListBindingSource;
|
||||
this.ProjectListListBox.DisplayMember = "Name";
|
||||
this.ProjectListListBox.Location = new System.Drawing.Point(12, 41);
|
||||
this.ProjectListListBox.Name = "ProjectListListBox";
|
||||
this.ProjectListListBox.Size = new System.Drawing.Size(419, 238);
|
||||
this.ProjectListListBox.TabIndex = 7;
|
||||
this.ProjectListListBox.ValueMember = "Id";
|
||||
//
|
||||
// projectListBindingSource
|
||||
//
|
||||
this.projectListBindingSource.DataSource = typeof(ProjectTracker.Library.ProjectInfo);
|
||||
//
|
||||
// TableLayoutPanel1
|
||||
//
|
||||
this.TableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TableLayoutPanel1.ColumnCount = 2;
|
||||
this.TableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.TableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.TableLayoutPanel1.Controls.Add(this.OK_Button, 0, 0);
|
||||
this.TableLayoutPanel1.Controls.Add(this.Cancel_Button, 1, 0);
|
||||
this.TableLayoutPanel1.Location = new System.Drawing.Point(285, 285);
|
||||
this.TableLayoutPanel1.Name = "TableLayoutPanel1";
|
||||
this.TableLayoutPanel1.RowCount = 1;
|
||||
this.TableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.TableLayoutPanel1.Size = new System.Drawing.Size(146, 29);
|
||||
this.TableLayoutPanel1.TabIndex = 6;
|
||||
//
|
||||
// OK_Button
|
||||
//
|
||||
this.OK_Button.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.OK_Button.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.OK_Button.Location = new System.Drawing.Point(3, 3);
|
||||
this.OK_Button.Name = "OK_Button";
|
||||
this.OK_Button.Size = new System.Drawing.Size(67, 23);
|
||||
this.OK_Button.TabIndex = 0;
|
||||
this.OK_Button.Text = "OK";
|
||||
this.OK_Button.Click += new System.EventHandler(this.OK_Button_Click);
|
||||
//
|
||||
// Cancel_Button
|
||||
//
|
||||
this.Cancel_Button.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.Cancel_Button.Location = new System.Drawing.Point(76, 3);
|
||||
this.Cancel_Button.Name = "Cancel_Button";
|
||||
this.Cancel_Button.Size = new System.Drawing.Size(67, 23);
|
||||
this.Cancel_Button.TabIndex = 1;
|
||||
this.Cancel_Button.Text = "Cancel";
|
||||
this.Cancel_Button.Click += new System.EventHandler(this.Cancel_Button_Click);
|
||||
//
|
||||
// ProjectSelect
|
||||
//
|
||||
this.AcceptButton = this.OK_Button;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.Cancel_Button;
|
||||
this.ClientSize = new System.Drawing.Size(443, 323);
|
||||
this.Controls.Add(this.GetListButton);
|
||||
this.Controls.Add(this.NameTextBox);
|
||||
this.Controls.Add(this.NameLabel);
|
||||
this.Controls.Add(this.ProjectListListBox);
|
||||
this.Controls.Add(this.TableLayoutPanel1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "ProjectSelect";
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Select Project";
|
||||
this.Load += new System.EventHandler(this.ProjectSelect_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.projectListBindingSource)).EndInit();
|
||||
this.TableLayoutPanel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
internal System.Windows.Forms.Button GetListButton;
|
||||
internal System.Windows.Forms.TextBox NameTextBox;
|
||||
internal System.Windows.Forms.Label NameLabel;
|
||||
internal System.Windows.Forms.ListBox ProjectListListBox;
|
||||
internal System.Windows.Forms.TableLayoutPanel TableLayoutPanel1;
|
||||
internal System.Windows.Forms.Button OK_Button;
|
||||
internal System.Windows.Forms.Button Cancel_Button;
|
||||
private System.Windows.Forms.BindingSource projectListBindingSource;
|
||||
}
|
||||
}
|
@@ -0,0 +1,59 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using ProjectTracker.Library;
|
||||
|
||||
namespace PTWin
|
||||
{
|
||||
public partial class ProjectSelect : Form
|
||||
{
|
||||
|
||||
private Guid _projectId;
|
||||
|
||||
public Guid ProjectId
|
||||
{
|
||||
get { return _projectId; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
public ProjectSelect()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void OK_Button_Click(object sender, EventArgs e)
|
||||
{
|
||||
_projectId = (Guid)this.ProjectListListBox.SelectedValue;
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void Cancel_Button_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void ProjectSelect_Load(object sender, EventArgs e)
|
||||
{
|
||||
DisplayList(ProjectList.GetProjectList());
|
||||
}
|
||||
|
||||
private void DisplayList(ProjectList list)
|
||||
{
|
||||
Csla.SortedBindingList<ProjectInfo> sortedList =
|
||||
new Csla.SortedBindingList<ProjectInfo>(list);
|
||||
sortedList.ApplySort("Name", ListSortDirection.Ascending);
|
||||
this.projectListBindingSource.DataSource = sortedList;
|
||||
}
|
||||
|
||||
private void GetListButton_Click(
|
||||
object sender, EventArgs e)
|
||||
{
|
||||
DisplayList(ProjectList.GetProjectList(NameTextBox.Text));
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="projectListBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
@@ -0,0 +1,33 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("PTWin")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Rockford Lhotka")]
|
||||
[assembly: AssemblyProduct("ProjectTracker")]
|
||||
[assembly: AssemblyCopyright("Copyright © Rockford Lhotka 2006")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("e8881d52-b4d0-431b-894b-7919c175f24c")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is automatically generated by Visual Studio .Net. It is
|
||||
used to store generic object data source configuration information.
|
||||
Renaming the file extension or editing the content of this file may
|
||||
cause the file to be unrecognizable by the program.
|
||||
-->
|
||||
<GenericObjectDataSource DisplayName="Roles" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
|
||||
<TypeInfo>ProjectTracker.Library.Admin.Roles, ProjectTracker.Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
|
||||
</GenericObjectDataSource>
|
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is automatically generated by Visual Studio .Net. It is
|
||||
used to store generic object data source configuration information.
|
||||
Renaming the file extension or editing the content of this file may
|
||||
cause the file to be unrecognizable by the program.
|
||||
-->
|
||||
<GenericObjectDataSource DisplayName="Project" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
|
||||
<TypeInfo>ProjectTracker.Library.Project, ProjectTracker.Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
|
||||
<TypeUISetting>
|
||||
<PropertyUISettings>
|
||||
<PropertyUISetting Name="Id">
|
||||
<ControlSettings>
|
||||
<ControlSetting ArtifactName="Microsoft:System.Windows.Forms:Form">
|
||||
<BindableControlInfo Name="Label" Type="System.Windows.Forms.Label" AssemblyName="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
</ControlSetting>
|
||||
</ControlSettings>
|
||||
</PropertyUISetting>
|
||||
</PropertyUISettings>
|
||||
</TypeUISetting>
|
||||
</GenericObjectDataSource>
|
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is automatically generated by Visual Studio .Net. It is
|
||||
used to store generic object data source configuration information.
|
||||
Renaming the file extension or editing the content of this file may
|
||||
cause the file to be unrecognizable by the program.
|
||||
-->
|
||||
<GenericObjectDataSource DisplayName="ProjectList" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
|
||||
<TypeInfo>ProjectTracker.Library.ProjectList, ProjectTracker.Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
|
||||
</GenericObjectDataSource>
|
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is automatically generated by Visual Studio .Net. It is
|
||||
used to store generic object data source configuration information.
|
||||
Renaming the file extension or editing the content of this file may
|
||||
cause the file to be unrecognizable by the program.
|
||||
-->
|
||||
<GenericObjectDataSource DisplayName="Resource" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
|
||||
<TypeInfo>ProjectTracker.Library.Resource, ProjectTracker.Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
|
||||
</GenericObjectDataSource>
|
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is automatically generated by Visual Studio .Net. It is
|
||||
used to store generic object data source configuration information.
|
||||
Renaming the file extension or editing the content of this file may
|
||||
cause the file to be unrecognizable by the program.
|
||||
-->
|
||||
<GenericObjectDataSource DisplayName="ResourceList" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
|
||||
<TypeInfo>ProjectTracker.Library.ResourceList, ProjectTracker.Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
|
||||
</GenericObjectDataSource>
|
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is automatically generated by Visual Studio .Net. It is
|
||||
used to store generic object data source configuration information.
|
||||
Renaming the file extension or editing the content of this file may
|
||||
cause the file to be unrecognizable by the program.
|
||||
-->
|
||||
<GenericObjectDataSource DisplayName="RoleList" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
|
||||
<TypeInfo>ProjectTracker.Library.RoleList, ProjectTracker.Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
|
||||
</GenericObjectDataSource>
|
63
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/Properties/Resources.Designer.cs
generated
Normal file
63
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.42
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace PTWin.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PTWin.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
26
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/Properties/Settings.Designer.cs
generated
Normal file
26
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.42
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace PTWin.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
358
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/ResourceEdit.Designer.cs
generated
Normal file
358
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/ResourceEdit.Designer.cs
generated
Normal file
@@ -0,0 +1,358 @@
|
||||
namespace PTWin
|
||||
{
|
||||
partial class ResourceEdit
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.Windows.Forms.Label FirstNameLabel;
|
||||
System.Windows.Forms.Label IdLabel;
|
||||
System.Windows.Forms.Label LastNameLabel;
|
||||
this.CloseButton = new System.Windows.Forms.Button();
|
||||
this.ApplyButton = new System.Windows.Forms.Button();
|
||||
this.Cancel_Button = new System.Windows.Forms.Button();
|
||||
this.OKButton = new System.Windows.Forms.Button();
|
||||
this.GroupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.AssignmentsDataGridView = new System.Windows.Forms.DataGridView();
|
||||
this.RoleListBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.AssignmentsBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.ResourceBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.UnassignButton = new System.Windows.Forms.Button();
|
||||
this.AssignButton = new System.Windows.Forms.Button();
|
||||
this.FirstNameTextBox = new System.Windows.Forms.TextBox();
|
||||
this.IdLabel1 = new System.Windows.Forms.Label();
|
||||
this.LastNameTextBox = new System.Windows.Forms.TextBox();
|
||||
this.ErrorProvider1 = new System.Windows.Forms.ErrorProvider(this.components);
|
||||
this.BindingSourceRefresh1 = new Csla.Windows.BindingSourceRefresh(this.components);
|
||||
this.ReadWriteAuthorization1 = new Csla.Windows.ReadWriteAuthorization(this.components);
|
||||
this.projectIdDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.projectNameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
this.assignedDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.Role = new System.Windows.Forms.DataGridViewComboBoxColumn();
|
||||
FirstNameLabel = new System.Windows.Forms.Label();
|
||||
IdLabel = new System.Windows.Forms.Label();
|
||||
LastNameLabel = new System.Windows.Forms.Label();
|
||||
this.GroupBox1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.AssignmentsDataGridView)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.RoleListBindingSource)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.AssignmentsBindingSource)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ResourceBindingSource)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ErrorProvider1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// FirstNameLabel
|
||||
//
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(FirstNameLabel, false);
|
||||
FirstNameLabel.AutoSize = true;
|
||||
FirstNameLabel.Location = new System.Drawing.Point(13, 42);
|
||||
FirstNameLabel.Name = "FirstNameLabel";
|
||||
FirstNameLabel.Size = new System.Drawing.Size(60, 13);
|
||||
FirstNameLabel.TabIndex = 35;
|
||||
FirstNameLabel.Text = "First Name:";
|
||||
//
|
||||
// IdLabel
|
||||
//
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(IdLabel, false);
|
||||
IdLabel.AutoSize = true;
|
||||
IdLabel.Location = new System.Drawing.Point(13, 13);
|
||||
IdLabel.Name = "IdLabel";
|
||||
IdLabel.Size = new System.Drawing.Size(19, 13);
|
||||
IdLabel.TabIndex = 37;
|
||||
IdLabel.Text = "Id:";
|
||||
//
|
||||
// LastNameLabel
|
||||
//
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(LastNameLabel, false);
|
||||
LastNameLabel.AutoSize = true;
|
||||
LastNameLabel.Location = new System.Drawing.Point(13, 68);
|
||||
LastNameLabel.Name = "LastNameLabel";
|
||||
LastNameLabel.Size = new System.Drawing.Size(61, 13);
|
||||
LastNameLabel.TabIndex = 39;
|
||||
LastNameLabel.Text = "Last Name:";
|
||||
//
|
||||
// CloseButton
|
||||
//
|
||||
this.CloseButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.CloseButton, false);
|
||||
this.CloseButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.CloseButton.Location = new System.Drawing.Point(501, 100);
|
||||
this.CloseButton.Name = "CloseButton";
|
||||
this.CloseButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.CloseButton.TabIndex = 45;
|
||||
this.CloseButton.Text = "Close";
|
||||
this.CloseButton.UseVisualStyleBackColor = true;
|
||||
this.CloseButton.Click += new System.EventHandler(this.CloseButton_Click);
|
||||
//
|
||||
// ApplyButton
|
||||
//
|
||||
this.ApplyButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.ApplyButton, false);
|
||||
this.ApplyButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.ApplyButton.Location = new System.Drawing.Point(501, 42);
|
||||
this.ApplyButton.Name = "ApplyButton";
|
||||
this.ApplyButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.ApplyButton.TabIndex = 44;
|
||||
this.ApplyButton.Text = "Apply";
|
||||
this.ApplyButton.UseVisualStyleBackColor = true;
|
||||
this.ApplyButton.Click += new System.EventHandler(this.ApplyButton_Click);
|
||||
//
|
||||
// Cancel_Button
|
||||
//
|
||||
this.Cancel_Button.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.Cancel_Button, false);
|
||||
this.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.Cancel_Button.Location = new System.Drawing.Point(501, 71);
|
||||
this.Cancel_Button.Name = "Cancel_Button";
|
||||
this.Cancel_Button.Size = new System.Drawing.Size(75, 23);
|
||||
this.Cancel_Button.TabIndex = 43;
|
||||
this.Cancel_Button.Text = "Cancel";
|
||||
this.Cancel_Button.UseVisualStyleBackColor = true;
|
||||
this.Cancel_Button.Click += new System.EventHandler(this.Cancel_Button_Click);
|
||||
//
|
||||
// OKButton
|
||||
//
|
||||
this.OKButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.OKButton, false);
|
||||
this.OKButton.Location = new System.Drawing.Point(501, 13);
|
||||
this.OKButton.Name = "OKButton";
|
||||
this.OKButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.OKButton.TabIndex = 42;
|
||||
this.OKButton.Text = "OK";
|
||||
this.OKButton.UseVisualStyleBackColor = true;
|
||||
this.OKButton.Click += new System.EventHandler(this.OKButton_Click);
|
||||
//
|
||||
// GroupBox1
|
||||
//
|
||||
this.GroupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.GroupBox1, false);
|
||||
this.GroupBox1.Controls.Add(this.AssignmentsDataGridView);
|
||||
this.GroupBox1.Controls.Add(this.UnassignButton);
|
||||
this.GroupBox1.Controls.Add(this.AssignButton);
|
||||
this.GroupBox1.Location = new System.Drawing.Point(16, 91);
|
||||
this.GroupBox1.Name = "GroupBox1";
|
||||
this.GroupBox1.Size = new System.Drawing.Size(449, 310);
|
||||
this.GroupBox1.TabIndex = 41;
|
||||
this.GroupBox1.TabStop = false;
|
||||
this.GroupBox1.Text = "Assigned projects";
|
||||
//
|
||||
// AssignmentsDataGridView
|
||||
//
|
||||
this.AssignmentsDataGridView.AllowUserToAddRows = false;
|
||||
this.AssignmentsDataGridView.AllowUserToDeleteRows = false;
|
||||
this.AssignmentsDataGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.AssignmentsDataGridView, false);
|
||||
this.AssignmentsDataGridView.AutoGenerateColumns = false;
|
||||
this.AssignmentsDataGridView.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
|
||||
this.AssignmentsDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.projectIdDataGridViewTextBoxColumn,
|
||||
this.projectNameDataGridViewTextBoxColumn,
|
||||
this.assignedDataGridViewTextBoxColumn,
|
||||
this.Role});
|
||||
this.AssignmentsDataGridView.DataSource = this.AssignmentsBindingSource;
|
||||
this.AssignmentsDataGridView.Location = new System.Drawing.Point(6, 19);
|
||||
this.AssignmentsDataGridView.MultiSelect = false;
|
||||
this.AssignmentsDataGridView.Name = "AssignmentsDataGridView";
|
||||
this.AssignmentsDataGridView.RowHeadersVisible = false;
|
||||
this.AssignmentsDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.AssignmentsDataGridView.Size = new System.Drawing.Size(356, 285);
|
||||
this.AssignmentsDataGridView.TabIndex = 15;
|
||||
this.AssignmentsDataGridView.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.AssignmentsDataGridView_CellContentClick);
|
||||
//
|
||||
// RoleListBindingSource
|
||||
//
|
||||
this.RoleListBindingSource.DataSource = typeof(ProjectTracker.Library.RoleList);
|
||||
this.BindingSourceRefresh1.SetReadValuesOnChange(this.RoleListBindingSource, false);
|
||||
//
|
||||
// AssignmentsBindingSource
|
||||
//
|
||||
this.AssignmentsBindingSource.DataMember = "Assignments";
|
||||
this.AssignmentsBindingSource.DataSource = this.ResourceBindingSource;
|
||||
this.BindingSourceRefresh1.SetReadValuesOnChange(this.AssignmentsBindingSource, false);
|
||||
//
|
||||
// ResourceBindingSource
|
||||
//
|
||||
this.ResourceBindingSource.DataSource = typeof(ProjectTracker.Library.Resource);
|
||||
this.BindingSourceRefresh1.SetReadValuesOnChange(this.ResourceBindingSource, true);
|
||||
//
|
||||
// UnassignButton
|
||||
//
|
||||
this.UnassignButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.UnassignButton, false);
|
||||
this.UnassignButton.Location = new System.Drawing.Point(368, 48);
|
||||
this.UnassignButton.Name = "UnassignButton";
|
||||
this.UnassignButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.UnassignButton.TabIndex = 14;
|
||||
this.UnassignButton.Text = "Unassign";
|
||||
this.UnassignButton.UseVisualStyleBackColor = true;
|
||||
this.UnassignButton.Click += new System.EventHandler(this.UnassignButton_Click);
|
||||
//
|
||||
// AssignButton
|
||||
//
|
||||
this.AssignButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.AssignButton, false);
|
||||
this.AssignButton.Location = new System.Drawing.Point(368, 19);
|
||||
this.AssignButton.Name = "AssignButton";
|
||||
this.AssignButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.AssignButton.TabIndex = 13;
|
||||
this.AssignButton.Text = "Assign";
|
||||
this.AssignButton.UseVisualStyleBackColor = true;
|
||||
this.AssignButton.Click += new System.EventHandler(this.AssignButton_Click);
|
||||
//
|
||||
// FirstNameTextBox
|
||||
//
|
||||
this.FirstNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.FirstNameTextBox, true);
|
||||
this.FirstNameTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.ResourceBindingSource, "FirstName", true));
|
||||
this.FirstNameTextBox.Location = new System.Drawing.Point(80, 39);
|
||||
this.FirstNameTextBox.Name = "FirstNameTextBox";
|
||||
this.FirstNameTextBox.Size = new System.Drawing.Size(385, 20);
|
||||
this.FirstNameTextBox.TabIndex = 36;
|
||||
//
|
||||
// IdLabel1
|
||||
//
|
||||
this.IdLabel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.IdLabel1, true);
|
||||
this.IdLabel1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.ResourceBindingSource, "Id", true));
|
||||
this.IdLabel1.Location = new System.Drawing.Point(80, 13);
|
||||
this.IdLabel1.Name = "IdLabel1";
|
||||
this.IdLabel1.Size = new System.Drawing.Size(385, 23);
|
||||
this.IdLabel1.TabIndex = 38;
|
||||
//
|
||||
// LastNameTextBox
|
||||
//
|
||||
this.LastNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this.LastNameTextBox, true);
|
||||
this.LastNameTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.ResourceBindingSource, "LastName", true));
|
||||
this.LastNameTextBox.Location = new System.Drawing.Point(80, 65);
|
||||
this.LastNameTextBox.Name = "LastNameTextBox";
|
||||
this.LastNameTextBox.Size = new System.Drawing.Size(385, 20);
|
||||
this.LastNameTextBox.TabIndex = 40;
|
||||
//
|
||||
// ErrorProvider1
|
||||
//
|
||||
this.ErrorProvider1.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
|
||||
this.ErrorProvider1.ContainerControl = this;
|
||||
this.ErrorProvider1.DataSource = this.ResourceBindingSource;
|
||||
//
|
||||
// projectIdDataGridViewTextBoxColumn
|
||||
//
|
||||
this.projectIdDataGridViewTextBoxColumn.DataPropertyName = "ProjectId";
|
||||
this.projectIdDataGridViewTextBoxColumn.HeaderText = "ProjectId";
|
||||
this.projectIdDataGridViewTextBoxColumn.Name = "projectIdDataGridViewTextBoxColumn";
|
||||
this.projectIdDataGridViewTextBoxColumn.ReadOnly = true;
|
||||
this.projectIdDataGridViewTextBoxColumn.Visible = false;
|
||||
this.projectIdDataGridViewTextBoxColumn.Width = 74;
|
||||
//
|
||||
// projectNameDataGridViewTextBoxColumn
|
||||
//
|
||||
this.projectNameDataGridViewTextBoxColumn.DataPropertyName = "ProjectName";
|
||||
this.projectNameDataGridViewTextBoxColumn.HeaderText = "Project Name";
|
||||
this.projectNameDataGridViewTextBoxColumn.Name = "projectNameDataGridViewTextBoxColumn";
|
||||
this.projectNameDataGridViewTextBoxColumn.ReadOnly = true;
|
||||
this.projectNameDataGridViewTextBoxColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.projectNameDataGridViewTextBoxColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.projectNameDataGridViewTextBoxColumn.Width = 96;
|
||||
//
|
||||
// assignedDataGridViewTextBoxColumn
|
||||
//
|
||||
this.assignedDataGridViewTextBoxColumn.DataPropertyName = "Assigned";
|
||||
this.assignedDataGridViewTextBoxColumn.HeaderText = "Assigned";
|
||||
this.assignedDataGridViewTextBoxColumn.Name = "assignedDataGridViewTextBoxColumn";
|
||||
this.assignedDataGridViewTextBoxColumn.ReadOnly = true;
|
||||
this.assignedDataGridViewTextBoxColumn.Width = 75;
|
||||
//
|
||||
// Role
|
||||
//
|
||||
this.Role.DataPropertyName = "Role";
|
||||
this.Role.DataSource = this.RoleListBindingSource;
|
||||
this.Role.DisplayMember = "Value";
|
||||
this.Role.HeaderText = "Role";
|
||||
this.Role.Name = "Role";
|
||||
this.Role.ValueMember = "Key";
|
||||
this.Role.Width = 35;
|
||||
//
|
||||
// ResourceEdit
|
||||
//
|
||||
this.ReadWriteAuthorization1.SetApplyAuthorization(this, false);
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.CloseButton);
|
||||
this.Controls.Add(this.ApplyButton);
|
||||
this.Controls.Add(this.Cancel_Button);
|
||||
this.Controls.Add(this.OKButton);
|
||||
this.Controls.Add(this.GroupBox1);
|
||||
this.Controls.Add(FirstNameLabel);
|
||||
this.Controls.Add(this.FirstNameTextBox);
|
||||
this.Controls.Add(IdLabel);
|
||||
this.Controls.Add(this.IdLabel1);
|
||||
this.Controls.Add(LastNameLabel);
|
||||
this.Controls.Add(this.LastNameTextBox);
|
||||
this.Name = "ResourceEdit";
|
||||
this.Size = new System.Drawing.Size(588, 415);
|
||||
this.GroupBox1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.AssignmentsDataGridView)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.RoleListBindingSource)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.AssignmentsBindingSource)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ResourceBindingSource)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ErrorProvider1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
internal System.Windows.Forms.Button CloseButton;
|
||||
internal System.Windows.Forms.Button ApplyButton;
|
||||
internal System.Windows.Forms.Button Cancel_Button;
|
||||
internal System.Windows.Forms.Button OKButton;
|
||||
internal System.Windows.Forms.GroupBox GroupBox1;
|
||||
internal System.Windows.Forms.Button UnassignButton;
|
||||
internal System.Windows.Forms.Button AssignButton;
|
||||
internal System.Windows.Forms.TextBox FirstNameTextBox;
|
||||
internal System.Windows.Forms.Label IdLabel1;
|
||||
internal System.Windows.Forms.TextBox LastNameTextBox;
|
||||
internal Csla.Windows.ReadWriteAuthorization ReadWriteAuthorization1;
|
||||
internal System.Windows.Forms.DataGridView AssignmentsDataGridView;
|
||||
internal System.Windows.Forms.BindingSource RoleListBindingSource;
|
||||
internal Csla.Windows.BindingSourceRefresh BindingSourceRefresh1;
|
||||
internal System.Windows.Forms.BindingSource AssignmentsBindingSource;
|
||||
internal System.Windows.Forms.BindingSource ResourceBindingSource;
|
||||
internal System.Windows.Forms.ErrorProvider ErrorProvider1;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn projectIdDataGridViewTextBoxColumn;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn projectNameDataGridViewTextBoxColumn;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn assignedDataGridViewTextBoxColumn;
|
||||
private System.Windows.Forms.DataGridViewComboBoxColumn Role;
|
||||
}
|
||||
}
|
@@ -0,0 +1,190 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using ProjectTracker.Library;
|
||||
|
||||
namespace PTWin
|
||||
{
|
||||
public partial class ResourceEdit : WinPart
|
||||
{
|
||||
|
||||
private Resource _resource;
|
||||
|
||||
public Resource Resource
|
||||
{
|
||||
get { return _resource; }
|
||||
}
|
||||
|
||||
public ResourceEdit(Resource resource)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
_resource = resource;
|
||||
|
||||
this.CurrentPrincipalChanged += new EventHandler(ResourceEdit_CurrentPrincipalChanged);
|
||||
_resource.PropertyChanged += new PropertyChangedEventHandler(mResource_PropertyChanged);
|
||||
|
||||
this.RoleListBindingSource.DataSource = RoleList.GetList();
|
||||
this.ResourceBindingSource.DataSource = _resource;
|
||||
|
||||
ApplyAuthorizationRules();
|
||||
}
|
||||
|
||||
#region WinPart Code
|
||||
|
||||
protected internal override object GetIdValue()
|
||||
{
|
||||
return _resource;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return _resource.FullName;
|
||||
}
|
||||
|
||||
private void ResourceEdit_CurrentPrincipalChanged(object sender, EventArgs e)
|
||||
{
|
||||
ApplyAuthorizationRules();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private void ApplyAuthorizationRules()
|
||||
{
|
||||
// have the controls enable/disable/etc
|
||||
this.ReadWriteAuthorization1.ResetControlAuthorization();
|
||||
|
||||
bool canEdit = ProjectTracker.Library.Project.CanEditObject();
|
||||
|
||||
// enable/disable appropriate buttons
|
||||
this.OKButton.Enabled = canEdit;
|
||||
this.ApplyButton.Enabled = canEdit;
|
||||
this.Cancel_Button.Enabled = canEdit;
|
||||
|
||||
// enable/disable role column in grid
|
||||
this.AssignmentsDataGridView.Columns[3].ReadOnly = !canEdit;
|
||||
}
|
||||
|
||||
private void SaveResource(bool rebind)
|
||||
{
|
||||
using (StatusBusy busy = new StatusBusy("Saving..."))
|
||||
{
|
||||
// stop the flow of events
|
||||
this.ResourceBindingSource.RaiseListChangedEvents = false;
|
||||
this.AssignmentsBindingSource.RaiseListChangedEvents = false;
|
||||
// do the save
|
||||
this.ResourceBindingSource.EndEdit();
|
||||
this.AssignmentsBindingSource.EndEdit();
|
||||
try
|
||||
{
|
||||
Resource temp = Resource.Clone();
|
||||
_resource = temp.Save();
|
||||
if (rebind)
|
||||
{
|
||||
// rebind the UI
|
||||
this.ResourceBindingSource.DataSource = null;
|
||||
this.AssignmentsBindingSource.DataSource = this.ResourceBindingSource;
|
||||
this.ResourceBindingSource.DataSource = _resource;
|
||||
ApplyAuthorizationRules();
|
||||
}
|
||||
}
|
||||
catch (Csla.DataPortalException ex)
|
||||
{
|
||||
MessageBox.Show(ex.BusinessException.ToString(),
|
||||
"Error saving", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(),
|
||||
"Error Saving", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.ResourceBindingSource.RaiseListChangedEvents = true;
|
||||
this.AssignmentsBindingSource.RaiseListChangedEvents = true;
|
||||
this.ResourceBindingSource.ResetBindings(false);
|
||||
this.AssignmentsBindingSource.ResetBindings(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OKButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveResource(false);
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void ApplyButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveResource(true);
|
||||
}
|
||||
|
||||
private void Cancel_Button_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.ResourceBindingSource.CancelEdit();
|
||||
this.AssignmentsBindingSource.CancelEdit();
|
||||
}
|
||||
|
||||
private void CloseButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.ResourceBindingSource.CancelEdit();
|
||||
this.AssignmentsBindingSource.CancelEdit();
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void AssignButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
ProjectSelect dlg = new ProjectSelect();
|
||||
if (dlg.ShowDialog() == DialogResult.OK)
|
||||
try
|
||||
{
|
||||
_resource.Assignments.AssignTo(dlg.ProjectId);
|
||||
}
|
||||
catch (InvalidOperationException ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(),
|
||||
"Error Assigning", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Information);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(),
|
||||
"Error Assigning", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
}
|
||||
|
||||
private void UnassignButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (this.AssignmentsDataGridView.SelectedRows.Count > 0)
|
||||
{
|
||||
Guid projectId = (Guid)this.AssignmentsDataGridView.SelectedRows[0].Cells[0].Value;
|
||||
_resource.Assignments.Remove(projectId);
|
||||
}
|
||||
}
|
||||
|
||||
private void mResource_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
if (e.PropertyName == "IsDirty")
|
||||
{
|
||||
this.ResourceBindingSource.ResetBindings(true);
|
||||
this.AssignmentsBindingSource.ResetBindings(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void AssignmentsDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex == 1 && e.RowIndex > -1)
|
||||
{
|
||||
Guid projectId = (Guid)this.AssignmentsDataGridView.Rows[e.RowIndex].Cells[0].Value;
|
||||
MainForm.Instance.ShowEditProject(projectId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,159 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="FirstNameLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="ReadWriteAuthorization1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>21, 38</value>
|
||||
</metadata>
|
||||
<metadata name="IdLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="LastNameLabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="ReadWriteAuthorization1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>21, 38</value>
|
||||
</metadata>
|
||||
<metadata name="Role.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="RoleListBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>15, 9</value>
|
||||
</metadata>
|
||||
<metadata name="BindingSourceRefresh1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>652, 9</value>
|
||||
</metadata>
|
||||
<metadata name="AssignmentsBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>344, 9</value>
|
||||
</metadata>
|
||||
<metadata name="ResourceBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>176, 9</value>
|
||||
</metadata>
|
||||
<metadata name="ResourceBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>176, 9</value>
|
||||
</metadata>
|
||||
<metadata name="ErrorProvider1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>529, 9</value>
|
||||
</metadata>
|
||||
<metadata name="BindingSourceRefresh1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>652, 9</value>
|
||||
</metadata>
|
||||
</root>
|
121
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/ResourceSelect.Designer.cs
generated
Normal file
121
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/ResourceSelect.Designer.cs
generated
Normal file
@@ -0,0 +1,121 @@
|
||||
namespace PTWin
|
||||
{
|
||||
partial class ResourceSelect
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.ResourceListListBox = new System.Windows.Forms.ListBox();
|
||||
this.ResourceListBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.TableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.OK_Button = new System.Windows.Forms.Button();
|
||||
this.Cancel_Button = new System.Windows.Forms.Button();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ResourceListBindingSource)).BeginInit();
|
||||
this.TableLayoutPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// ResourceListListBox
|
||||
//
|
||||
this.ResourceListListBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ResourceListListBox.DataSource = this.ResourceListBindingSource;
|
||||
this.ResourceListListBox.Location = new System.Drawing.Point(12, 12);
|
||||
this.ResourceListListBox.Name = "ResourceListListBox";
|
||||
this.ResourceListListBox.Size = new System.Drawing.Size(416, 264);
|
||||
this.ResourceListListBox.TabIndex = 4;
|
||||
//
|
||||
// ResourceListBindingSource
|
||||
//
|
||||
this.ResourceListBindingSource.DataSource = typeof(ProjectTracker.Library.ResourceList);
|
||||
//
|
||||
// TableLayoutPanel1
|
||||
//
|
||||
this.TableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TableLayoutPanel1.ColumnCount = 2;
|
||||
this.TableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.TableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.TableLayoutPanel1.Controls.Add(this.OK_Button, 0, 0);
|
||||
this.TableLayoutPanel1.Controls.Add(this.Cancel_Button, 1, 0);
|
||||
this.TableLayoutPanel1.Location = new System.Drawing.Point(285, 282);
|
||||
this.TableLayoutPanel1.Name = "TableLayoutPanel1";
|
||||
this.TableLayoutPanel1.RowCount = 1;
|
||||
this.TableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.TableLayoutPanel1.Size = new System.Drawing.Size(146, 29);
|
||||
this.TableLayoutPanel1.TabIndex = 3;
|
||||
//
|
||||
// OK_Button
|
||||
//
|
||||
this.OK_Button.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.OK_Button.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.OK_Button.Location = new System.Drawing.Point(3, 3);
|
||||
this.OK_Button.Name = "OK_Button";
|
||||
this.OK_Button.Size = new System.Drawing.Size(67, 23);
|
||||
this.OK_Button.TabIndex = 0;
|
||||
this.OK_Button.Text = "OK";
|
||||
this.OK_Button.Click += new System.EventHandler(this.OK_Button_Click);
|
||||
//
|
||||
// Cancel_Button
|
||||
//
|
||||
this.Cancel_Button.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.Cancel_Button.Location = new System.Drawing.Point(76, 3);
|
||||
this.Cancel_Button.Name = "Cancel_Button";
|
||||
this.Cancel_Button.Size = new System.Drawing.Size(67, 23);
|
||||
this.Cancel_Button.TabIndex = 1;
|
||||
this.Cancel_Button.Text = "Cancel";
|
||||
this.Cancel_Button.Click += new System.EventHandler(this.Cancel_Button_Click);
|
||||
//
|
||||
// ResourceSelect
|
||||
//
|
||||
this.ClientSize = new System.Drawing.Size(443, 323);
|
||||
this.Controls.Add(this.ResourceListListBox);
|
||||
this.Controls.Add(this.TableLayoutPanel1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "ResourceSelect";
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "ResourceSelect";
|
||||
this.Load += new System.EventHandler(this.ResourceSelect_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.ResourceListBindingSource)).EndInit();
|
||||
this.TableLayoutPanel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
internal System.Windows.Forms.ListBox ResourceListListBox;
|
||||
internal System.Windows.Forms.TableLayoutPanel TableLayoutPanel1;
|
||||
internal System.Windows.Forms.Button OK_Button;
|
||||
internal System.Windows.Forms.Button Cancel_Button;
|
||||
internal System.Windows.Forms.BindingSource ResourceListBindingSource;
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using ProjectTracker.Library;
|
||||
|
||||
namespace PTWin
|
||||
{
|
||||
public partial class ResourceSelect : Form
|
||||
{
|
||||
private int _resourceId;
|
||||
public int ResourceId
|
||||
{
|
||||
get { return _resourceId; }
|
||||
}
|
||||
|
||||
public ResourceSelect()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void OK_Button_Click(object sender, EventArgs e)
|
||||
{
|
||||
_resourceId =
|
||||
((ResourceInfo)
|
||||
this.ResourceListListBox.SelectedValue).Id;
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void Cancel_Button_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void ResourceSelect_Load(object sender, EventArgs e)
|
||||
{
|
||||
this.ResourceListBindingSource.DataSource =
|
||||
ResourceList.GetResourceList();
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="ResourceListBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
122
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/RolesEdit.Designer.cs
generated
Normal file
122
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/RolesEdit.Designer.cs
generated
Normal file
@@ -0,0 +1,122 @@
|
||||
namespace PTWin
|
||||
{
|
||||
partial class RolesEdit
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.CancelButton = new System.Windows.Forms.Button();
|
||||
this.SaveButton = new System.Windows.Forms.Button();
|
||||
this.rolesBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.RolesDataGridView = new System.Windows.Forms.DataGridView();
|
||||
this.DataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.DataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rolesBindingSource)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.RolesDataGridView)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// CancelButton
|
||||
//
|
||||
this.CancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.CancelButton.Location = new System.Drawing.Point(453, 42);
|
||||
this.CancelButton.Name = "CancelButton";
|
||||
this.CancelButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.CancelButton.TabIndex = 6;
|
||||
this.CancelButton.Text = "Cancel";
|
||||
this.CancelButton.UseVisualStyleBackColor = true;
|
||||
this.CancelButton.Click += new System.EventHandler(this.CancelButton_Click);
|
||||
//
|
||||
// SaveButton
|
||||
//
|
||||
this.SaveButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.SaveButton.Location = new System.Drawing.Point(453, 13);
|
||||
this.SaveButton.Name = "SaveButton";
|
||||
this.SaveButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.SaveButton.TabIndex = 5;
|
||||
this.SaveButton.Text = "Save";
|
||||
this.SaveButton.UseVisualStyleBackColor = true;
|
||||
this.SaveButton.Click += new System.EventHandler(this.SaveButton_Click);
|
||||
//
|
||||
// rolesBindingSource
|
||||
//
|
||||
this.rolesBindingSource.DataSource = typeof(ProjectTracker.Library.Admin.Roles);
|
||||
//
|
||||
// RolesDataGridView
|
||||
//
|
||||
this.RolesDataGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.RolesDataGridView.AutoGenerateColumns = false;
|
||||
this.RolesDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.DataGridViewTextBoxColumn1,
|
||||
this.DataGridViewTextBoxColumn2});
|
||||
this.RolesDataGridView.DataSource = this.rolesBindingSource;
|
||||
this.RolesDataGridView.Location = new System.Drawing.Point(12, 13);
|
||||
this.RolesDataGridView.MultiSelect = false;
|
||||
this.RolesDataGridView.Name = "RolesDataGridView";
|
||||
this.RolesDataGridView.Size = new System.Drawing.Size(435, 323);
|
||||
this.RolesDataGridView.TabIndex = 7;
|
||||
//
|
||||
// DataGridViewTextBoxColumn1
|
||||
//
|
||||
this.DataGridViewTextBoxColumn1.DataPropertyName = "Id";
|
||||
this.DataGridViewTextBoxColumn1.HeaderText = "Id";
|
||||
this.DataGridViewTextBoxColumn1.Name = "DataGridViewTextBoxColumn1";
|
||||
//
|
||||
// DataGridViewTextBoxColumn2
|
||||
//
|
||||
this.DataGridViewTextBoxColumn2.DataPropertyName = "Name";
|
||||
this.DataGridViewTextBoxColumn2.HeaderText = "Name";
|
||||
this.DataGridViewTextBoxColumn2.Name = "DataGridViewTextBoxColumn2";
|
||||
//
|
||||
// RolesEdit
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.RolesDataGridView);
|
||||
this.Controls.Add(this.CancelButton);
|
||||
this.Controls.Add(this.SaveButton);
|
||||
this.Name = "RolesEdit";
|
||||
this.Size = new System.Drawing.Size(541, 348);
|
||||
this.Load += new System.EventHandler(this.RolesEdit_Load);
|
||||
this.CurrentPrincipalChanged += new System.EventHandler(this.RolesEdit_CurrentPrincipalChanged);
|
||||
((System.ComponentModel.ISupportInitialize)(this.rolesBindingSource)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.RolesDataGridView)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
internal System.Windows.Forms.Button CancelButton;
|
||||
internal System.Windows.Forms.Button SaveButton;
|
||||
internal System.Windows.Forms.BindingSource rolesBindingSource;
|
||||
internal System.Windows.Forms.DataGridView RolesDataGridView;
|
||||
internal System.Windows.Forms.DataGridViewTextBoxColumn DataGridViewTextBoxColumn1;
|
||||
internal System.Windows.Forms.DataGridViewTextBoxColumn DataGridViewTextBoxColumn2;
|
||||
}
|
||||
}
|
@@ -0,0 +1,89 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using ProjectTracker.Library.Admin;
|
||||
|
||||
namespace PTWin
|
||||
{
|
||||
public partial class RolesEdit : WinPart
|
||||
{
|
||||
|
||||
private Roles _roles;
|
||||
|
||||
public RolesEdit()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void RolesEdit_Load(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
_roles = Roles.GetRoles();
|
||||
}
|
||||
catch (Csla.DataPortalException ex)
|
||||
{
|
||||
MessageBox.Show(ex.BusinessException.ToString(),
|
||||
"Data load error", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(),
|
||||
"Data load error", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
if (_roles != null)
|
||||
this.rolesBindingSource.DataSource = _roles;
|
||||
}
|
||||
|
||||
protected internal override object GetIdValue()
|
||||
{
|
||||
return "Edit Roles";
|
||||
}
|
||||
|
||||
private void SaveButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.rolesBindingSource.RaiseListChangedEvents = false;
|
||||
this.rolesBindingSource.EndEdit();
|
||||
try
|
||||
{
|
||||
Roles temp = _roles.Clone();
|
||||
_roles = temp.Save();
|
||||
this.Close();
|
||||
}
|
||||
catch (Csla.DataPortalException ex)
|
||||
{
|
||||
MessageBox.Show(ex.BusinessException.ToString(),
|
||||
"Error saving", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(), "Error saving",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.rolesBindingSource.RaiseListChangedEvents = true;
|
||||
this.rolesBindingSource.ResetBindings(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void CancelButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void RolesEdit_CurrentPrincipalChanged(
|
||||
object sender, EventArgs e)
|
||||
{
|
||||
if (!Roles.CanEditObject())
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="rolesBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
@@ -0,0 +1,40 @@
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace PTWin
|
||||
{
|
||||
public class StatusBusy : IDisposable
|
||||
{
|
||||
private string _oldStatus;
|
||||
private Cursor _oldCursor;
|
||||
|
||||
public StatusBusy(string statusText)
|
||||
{
|
||||
_oldStatus = MainForm.Instance.StatusLabel.Text;
|
||||
MainForm.Instance.StatusLabel.Text = statusText;
|
||||
_oldCursor = MainForm.Instance.Cursor;
|
||||
MainForm.Instance.Cursor = Cursors.WaitCursor;
|
||||
}
|
||||
|
||||
// IDisposable
|
||||
private bool _disposedValue = false; // To detect redundant calls
|
||||
|
||||
protected void Dispose(bool disposing)
|
||||
{
|
||||
if (!_disposedValue)
|
||||
if (disposing)
|
||||
{
|
||||
MainForm.Instance.StatusLabel.Text = _oldStatus;
|
||||
MainForm.Instance.Cursor = _oldCursor;
|
||||
}
|
||||
_disposedValue = true;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
// Do not change this code. Put cleanup code in Dispose(bool disposing) above
|
||||
Dispose(true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
}
|
||||
}
|
37
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/WinPart.Designer.cs
generated
Normal file
37
PROMS/csla20cs-2.1.4-070223/csla20cs/ProjectTracker20cs/PTWin/WinPart.Designer.cs
generated
Normal file
@@ -0,0 +1,37 @@
|
||||
namespace PTWin
|
||||
{
|
||||
partial class WinPart
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@@ -0,0 +1,81 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace PTWin
|
||||
{
|
||||
public partial class WinPart : UserControl
|
||||
{
|
||||
public WinPart()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
protected internal virtual object GetIdValue()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (this.DesignMode)
|
||||
return base.Equals(obj);
|
||||
else
|
||||
{
|
||||
object id = GetIdValue();
|
||||
if (this.GetType().Equals(obj.GetType()) && id != null)
|
||||
return ((WinPart)obj).GetIdValue().Equals(id);
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
object id = GetIdValue();
|
||||
if (id != null)
|
||||
return GetIdValue().GetHashCode();
|
||||
else
|
||||
return base.GetHashCode();
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
object id = GetIdValue();
|
||||
if (id != null)
|
||||
return id.ToString();
|
||||
else
|
||||
return base.ToString();
|
||||
}
|
||||
|
||||
#region CloseWinPart
|
||||
|
||||
public event EventHandler CloseWinPart;
|
||||
|
||||
protected void Close()
|
||||
{
|
||||
if (CloseWinPart != null)
|
||||
CloseWinPart(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region CurrentPrincipalChanged
|
||||
|
||||
public event EventHandler CurrentPrincipalChanged;
|
||||
|
||||
protected internal virtual void OnCurrentPrincipalChanged(
|
||||
object sender, EventArgs e)
|
||||
{
|
||||
if (CurrentPrincipalChanged != null)
|
||||
CurrentPrincipalChanged(sender, e);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,220 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using Csla;
|
||||
|
||||
namespace ProjectTracker.Library.Admin
|
||||
{
|
||||
[Serializable()]
|
||||
public class Role : BusinessBase<Role>
|
||||
{
|
||||
#region Business Methods
|
||||
|
||||
private int _id;
|
||||
private bool _idSet;
|
||||
private string _name = String.Empty;
|
||||
private byte[] _timestamp = new byte[8];
|
||||
|
||||
[System.ComponentModel.DataObjectField(true, true)]
|
||||
public int Id
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
if (!_idSet)
|
||||
{
|
||||
// generate a default id value
|
||||
_idSet = true;
|
||||
Roles parent = (Roles)this.Parent;
|
||||
int max = 0;
|
||||
foreach (Role item in parent)
|
||||
{
|
||||
if (item.Id > max)
|
||||
max = item.Id;
|
||||
}
|
||||
_id = max + 1;
|
||||
}
|
||||
return _id;
|
||||
}
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
set
|
||||
{
|
||||
CanWriteProperty(true);
|
||||
if (!_id.Equals(value))
|
||||
{
|
||||
_idSet = true;
|
||||
_id = value;
|
||||
PropertyHasChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _name;
|
||||
}
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
set
|
||||
{
|
||||
CanWriteProperty(true);
|
||||
if (value == null) value = string.Empty;
|
||||
if (!_name.Equals(value))
|
||||
{
|
||||
_name = value;
|
||||
PropertyHasChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override object GetIdValue()
|
||||
{
|
||||
return _id;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Validation Rules
|
||||
|
||||
protected override void AddBusinessRules()
|
||||
{
|
||||
ValidationRules.AddRule(
|
||||
Csla.Validation.CommonRules.StringRequired, "Name");
|
||||
}
|
||||
|
||||
protected override void AddInstanceBusinessRules()
|
||||
{
|
||||
ValidationRules.AddInstanceRule(NoDuplicates, "Id");
|
||||
}
|
||||
|
||||
private bool NoDuplicates(object target, Csla.Validation.RuleArgs e)
|
||||
{
|
||||
Roles parent = (Roles)this.Parent;
|
||||
foreach (Role item in parent)
|
||||
if (item.Id == _id && !ReferenceEquals(item, this))
|
||||
{
|
||||
e.Description = "Role Id must be unique";
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Authorization Rules
|
||||
|
||||
protected override void AddAuthorizationRules()
|
||||
{
|
||||
AuthorizationRules.AllowWrite(
|
||||
"Id", "Administrator");
|
||||
AuthorizationRules.AllowWrite(
|
||||
"Name", "Administrator");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Factory Methods
|
||||
|
||||
internal static Role NewRole()
|
||||
{
|
||||
return new Role();
|
||||
}
|
||||
|
||||
internal static Role
|
||||
GetRole(Csla.Data.SafeDataReader dr)
|
||||
{
|
||||
return new Role(dr);
|
||||
}
|
||||
|
||||
private Role()
|
||||
{
|
||||
MarkAsChild();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Data Access
|
||||
|
||||
private Role(Csla.Data.SafeDataReader dr)
|
||||
{
|
||||
MarkAsChild();
|
||||
_id = dr.GetInt32("id");
|
||||
_idSet = true;
|
||||
_name = dr.GetString("name");
|
||||
dr.GetBytes("lastChanged", 0, _timestamp, 0, 8);
|
||||
MarkOld();
|
||||
}
|
||||
|
||||
internal void Insert(SqlConnection cn)
|
||||
{
|
||||
// if we're not dirty then don't update the database
|
||||
if (!this.IsDirty) return;
|
||||
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandText = "addRole";
|
||||
DoInsertUpdate(cm);
|
||||
}
|
||||
}
|
||||
|
||||
internal void Update(SqlConnection cn)
|
||||
{
|
||||
// if we're not dirty then don't update the database.
|
||||
if (!this.IsDirty) return;
|
||||
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandText = "updateRole";
|
||||
cm.Parameters.AddWithValue("@lastChanged", _timestamp);
|
||||
DoInsertUpdate(cm);
|
||||
}
|
||||
}
|
||||
|
||||
void DoInsertUpdate(SqlCommand cm)
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.Parameters.AddWithValue("@id", _id);
|
||||
cm.Parameters.AddWithValue("@name", _name);
|
||||
SqlParameter param =
|
||||
new SqlParameter("@newLastChanged", SqlDbType.Timestamp);
|
||||
param.Direction = ParameterDirection.Output;
|
||||
cm.Parameters.Add(param);
|
||||
|
||||
cm.ExecuteNonQuery();
|
||||
|
||||
_timestamp = (byte[])cm.Parameters["@newLastChanged"].Value;
|
||||
|
||||
MarkOld();
|
||||
}
|
||||
|
||||
internal void DeleteSelf(SqlConnection cn)
|
||||
{
|
||||
// if we're not dirty then don't update the database
|
||||
if (!this.IsDirty) return;
|
||||
|
||||
// if we're new then don't update the database
|
||||
if (this.IsNew) return;
|
||||
|
||||
DeleteRole(cn, _id);
|
||||
MarkNew();
|
||||
}
|
||||
|
||||
internal static void DeleteRole(SqlConnection cn, int id)
|
||||
{
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "deleteRole";
|
||||
cm.Parameters.AddWithValue("@id", id);
|
||||
cm.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,175 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using Csla;
|
||||
using Csla.Data;
|
||||
|
||||
namespace ProjectTracker.Library.Admin
|
||||
{
|
||||
/// <summary>
|
||||
/// Used to maintain the list of roles
|
||||
/// in the system.
|
||||
/// </summary>
|
||||
[Serializable()]
|
||||
public class Roles :
|
||||
BusinessListBase<Roles, Role>
|
||||
{
|
||||
#region Business Methods
|
||||
|
||||
/// <summary>
|
||||
/// Remove a role based on the role's
|
||||
/// id value.
|
||||
/// </summary>
|
||||
/// <param name="id">Id value of the role to remove.</param>
|
||||
public void Remove(int id)
|
||||
{
|
||||
foreach (Role item in this)
|
||||
{
|
||||
if (item.Id == id)
|
||||
{
|
||||
Remove(item);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a role based on its id value.
|
||||
/// </summary>
|
||||
/// <param name="id">Id valud of the role to return</param>
|
||||
public Role GetRoleById(int id)
|
||||
{
|
||||
foreach (Role item in this)
|
||||
if (item.Id == id)
|
||||
return item;
|
||||
return null;
|
||||
}
|
||||
|
||||
protected override object AddNewCore()
|
||||
{
|
||||
Role item = Role.NewRole();
|
||||
Add(item);
|
||||
return item;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Authorization Rules
|
||||
|
||||
public static bool CanAddObject()
|
||||
{
|
||||
return Csla.ApplicationContext.User.IsInRole("Administrator");
|
||||
}
|
||||
|
||||
public static bool CanGetObject()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool CanDeleteObject()
|
||||
{
|
||||
return Csla.ApplicationContext.User.IsInRole("Administrator");
|
||||
}
|
||||
|
||||
public static bool CanEditObject()
|
||||
{
|
||||
return Csla.ApplicationContext.User.IsInRole("Administrator");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Factory Methods
|
||||
|
||||
public static Roles GetRoles()
|
||||
{
|
||||
return DataPortal.Fetch<Roles>(new Criteria());
|
||||
}
|
||||
|
||||
private Roles()
|
||||
{
|
||||
this.AllowNew = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Data Access
|
||||
|
||||
[Serializable()]
|
||||
private class Criteria
|
||||
{ /* no criteria */ }
|
||||
|
||||
public override Roles Save()
|
||||
{
|
||||
// see if save is allowed
|
||||
if (!CanEditObject())
|
||||
throw new System.Security.SecurityException(
|
||||
"User not authorized to save roles");
|
||||
|
||||
// do the save
|
||||
Roles result;
|
||||
result = base.Save();
|
||||
// this runs on the client and invalidates
|
||||
// the RoleList cache
|
||||
RoleList.InvalidateCache();
|
||||
return result;
|
||||
}
|
||||
|
||||
protected override void DataPortal_OnDataPortalInvokeComplete(
|
||||
DataPortalEventArgs e)
|
||||
{
|
||||
if (ApplicationContext.ExecutionLocation ==
|
||||
ApplicationContext.ExecutionLocations.Server)
|
||||
{
|
||||
// this runs on the server and invalidates
|
||||
// the RoleList cache
|
||||
RoleList.InvalidateCache();
|
||||
}
|
||||
}
|
||||
|
||||
private void DataPortal_Fetch(Criteria criteria)
|
||||
{
|
||||
RaiseListChangedEvents = false;
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "getRoles";
|
||||
|
||||
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
|
||||
while (dr.Read())
|
||||
this.Add(Role.GetRole(dr));
|
||||
}
|
||||
}
|
||||
RaiseListChangedEvents = true;
|
||||
}
|
||||
|
||||
[Transactional(TransactionalTypes.TransactionScope)]
|
||||
protected override void DataPortal_Update()
|
||||
{
|
||||
this.RaiseListChangedEvents = false;
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
foreach (Role item in DeletedList)
|
||||
{
|
||||
item.DeleteSelf(cn);
|
||||
}
|
||||
DeletedList.Clear();
|
||||
|
||||
foreach (Role item in this)
|
||||
{
|
||||
if (item.IsNew)
|
||||
item.Insert(cn);
|
||||
else
|
||||
item.Update(cn);
|
||||
}
|
||||
}
|
||||
this.RaiseListChangedEvents = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,114 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using Csla;
|
||||
using Csla.Validation;
|
||||
using Csla.Data;
|
||||
using System.Reflection;
|
||||
|
||||
namespace ProjectTracker.Library
|
||||
{
|
||||
internal interface IHoldRoles
|
||||
{
|
||||
int Role { get; set;}
|
||||
}
|
||||
|
||||
internal static class Assignment
|
||||
{
|
||||
|
||||
#region Business Methods
|
||||
|
||||
public static DateTime GetDefaultAssignedDate()
|
||||
{
|
||||
return DateTime.Today;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Validation Rules
|
||||
|
||||
/// <summary>
|
||||
/// Ensure the Role property value exists
|
||||
/// in RoleList
|
||||
/// </summary>
|
||||
public static bool ValidRole(object target, RuleArgs e)
|
||||
{
|
||||
int role = ((IHoldRoles)target).Role;
|
||||
|
||||
if (RoleList.GetList().ContainsKey(role))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
e.Description = "Role must be in RoleList";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Data Access
|
||||
|
||||
public static byte[] AddAssignment(
|
||||
SqlConnection cn, Guid projectId, int resourceId,
|
||||
SmartDate assigned, int role)
|
||||
{
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandText = "addAssignment";
|
||||
return DoAddUpdate(
|
||||
cm, projectId, resourceId, assigned, role);
|
||||
}
|
||||
}
|
||||
|
||||
public static byte[] UpdateAssignment(SqlConnection cn,
|
||||
Guid projectId, int resourceId, SmartDate assigned,
|
||||
int newRole, byte[] timestamp)
|
||||
{
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandText = "updateAssignment";
|
||||
cm.Parameters.AddWithValue("@lastChanged", timestamp);
|
||||
return DoAddUpdate(
|
||||
cm, projectId, resourceId, assigned, newRole);
|
||||
}
|
||||
}
|
||||
|
||||
private static byte[] DoAddUpdate(SqlCommand cm,
|
||||
Guid projectId, int resourceId, SmartDate assigned,
|
||||
int newRole)
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.Parameters.AddWithValue("@projectId", projectId);
|
||||
cm.Parameters.AddWithValue("@resourceId", resourceId);
|
||||
cm.Parameters.AddWithValue("@assigned", assigned.DBValue);
|
||||
cm.Parameters.AddWithValue("@role", newRole);
|
||||
SqlParameter param =
|
||||
new SqlParameter("@newLastChanged", SqlDbType.Timestamp);
|
||||
param.Direction = ParameterDirection.Output;
|
||||
cm.Parameters.Add(param);
|
||||
|
||||
cm.ExecuteNonQuery();
|
||||
|
||||
return (byte[])cm.Parameters["@newLastChanged"].Value;
|
||||
}
|
||||
|
||||
public static void RemoveAssignment(
|
||||
SqlConnection cn, Guid projectId, int resourceId)
|
||||
{
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "deleteAssignment";
|
||||
cm.Parameters.AddWithValue("@projectId", projectId);
|
||||
cm.Parameters.AddWithValue("@resourceId", resourceId);
|
||||
|
||||
cm.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Configuration;
|
||||
|
||||
namespace ProjectTracker.Library
|
||||
{
|
||||
public static class Database
|
||||
{
|
||||
public static string PTrackerConnection
|
||||
{
|
||||
get
|
||||
{
|
||||
return ConfigurationManager.ConnectionStrings
|
||||
["PTracker"].ConnectionString;
|
||||
}
|
||||
}
|
||||
|
||||
public static string SecurityConnection
|
||||
{
|
||||
get { return System.Configuration.ConfigurationManager.ConnectionStrings["Security"].ConnectionString; }
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ClassDiagram MajorVersion="1" MinorVersion="1">
|
||||
<Font Name="Tahoma" Size="8.25" />
|
||||
<Class Name="ProjectTracker.Library.Project" Collapsed="true">
|
||||
<Position X="1" Y="2.75" Width="1.5" />
|
||||
<TypeIdentifier>
|
||||
<FileName>Project.cs</FileName>
|
||||
<HashCode>EAACIIwBIgAgRAEEAAjIAgQAAAJAgAECAhgBAAEAmAA=</HashCode>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
<Class Name="Csla.BusinessBase<T>" Collapsed="true">
|
||||
<Position X="1" Y="1.5" Width="1.5" />
|
||||
<TypeIdentifier />
|
||||
</Class>
|
||||
</ClassDiagram>
|
@@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ClassDiagram MajorVersion="1" MinorVersion="1">
|
||||
<Font Name="Tahoma" Size="8.25" />
|
||||
<Class Name="ProjectTracker.Library.Project" Collapsed="true">
|
||||
<Position X="2" Y="1.75" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<FileName>Project.cs</FileName>
|
||||
<HashCode>EAACIIwBIgAgRAEEAAjIAgQAAAJAgAECAhgBAAEAmAA=</HashCode>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
<Class Name="ProjectTracker.Library.Resource" Collapsed="true">
|
||||
<Position X="5" Y="1.75" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<FileName>Resource.cs</FileName>
|
||||
<HashCode>FAMCgMgAAAAARIAAAAlIAAAAAABAgAECABgJCAEAiAg=</HashCode>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
<Class Name="Csla.BusinessBase<T>" Collapsed="true">
|
||||
<Position X="4.5" Y="0.5" Width="2.25" />
|
||||
<TypeIdentifier />
|
||||
</Class>
|
||||
<Class Name="ProjectTracker.Library.ProjectResource" Collapsed="true">
|
||||
<Position X="2" Y="2.75" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<FileName>ProjectResource.cs</FileName>
|
||||
<HashCode>EAUAAEAAAgAAgIAAEAEAAAAAAAAAAAoAAAABCEAAigg=</HashCode>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
<Class Name="ProjectTracker.Library.ResourceAssignment" Collapsed="true">
|
||||
<Position X="5" Y="2.75" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<FileName>ResourceAssignment.cs</FileName>
|
||||
<HashCode>EAQAAEAAAAAAAABAGAAAAAAABAAAAAIAAgABAEAIigA=</HashCode>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
<Class Name="ProjectTracker.Library.ProjectResources" Collapsed="true">
|
||||
<Position X="0.5" Y="5.75" Width="3.25" />
|
||||
<TypeIdentifier>
|
||||
<FileName>ProjectResources.cs</FileName>
|
||||
<HashCode>AAQAAAQAAAAAAGAAAAAABAAAAAAAAAAAAAAAQBAQCAA=</HashCode>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
<Class Name="ProjectTracker.Library.ResourceAssignments" Collapsed="true">
|
||||
<Position X="4" Y="5.75" Width="3.25" />
|
||||
<TypeIdentifier>
|
||||
<FileName>ResourceAssignments.cs</FileName>
|
||||
<HashCode>AAQAAAAAAAAAAAAACAAABAAAIAAAgAAAEAAAAAAACAA=</HashCode>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
<Class Name="Csla.BusinessListBase<T, C>" Collapsed="true">
|
||||
<Position X="4.5" Y="4.5" Width="2.25" />
|
||||
<TypeIdentifier />
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Class Name="ProjectTracker.Library.Admin.Roles" Collapsed="true">
|
||||
<Position X="7.5" Y="5.75" Width="1.75" />
|
||||
<TypeIdentifier>
|
||||
<FileName>Admin\Roles.cs</FileName>
|
||||
<HashCode>AAAAAIAAAAAARAAAEAAAhAACACAAgAECAAgAAAAAAAA=</HashCode>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
<Class Name="ProjectTracker.Library.Admin.Role" Collapsed="true">
|
||||
<Position X="7.75" Y="1.75" Width="1.5" />
|
||||
<TypeIdentifier>
|
||||
<FileName>Admin\Role.cs</FileName>
|
||||
<HashCode>UAQCIEEAAAAAAAAAgARAAAQAAAAAAAAAAAAAAEAAgAA=</HashCode>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
</ClassDiagram>
|
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ClassDiagram MajorVersion="1" MinorVersion="1">
|
||||
<Font Name="Tahoma" Size="8.25" />
|
||||
<Class Name="ProjectTracker.Library.ResourceList" Collapsed="true">
|
||||
<Position X="4.5" Y="1.75" Width="2.5" />
|
||||
<TypeIdentifier>
|
||||
<FileName>ResourceList.cs</FileName>
|
||||
<HashCode>AAAAAAAAAAAABAAAgAAAAAAAAAAAIAAAAAAAAAAAAAA=</HashCode>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
<Class Name="ProjectTracker.Library.ProjectList" Collapsed="true">
|
||||
<Position X="1.75" Y="1.75" Width="2.5" />
|
||||
<TypeIdentifier>
|
||||
<FileName>ProjectList.cs</FileName>
|
||||
<HashCode>AAAAAAAAAAAABEAAAAEAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
<Class Name="Csla.ReadOnlyListBase<T, C>" Collapsed="true">
|
||||
<Position X="3.25" Y="0.5" Width="2.25" />
|
||||
<TypeIdentifier />
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Class Name="ProjectTracker.Library.RoleList" Collapsed="true">
|
||||
<Position X="3.5" Y="5" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<FileName>RoleList.cs</FileName>
|
||||
<HashCode>AAABAAAAAAAABAAAAAAAAAAAAAAAAABAQAAAAAAAAAI=</HashCode>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
<Class Name="Csla.NameValueListBase<K, V>" Collapsed="true">
|
||||
<Position X="3.5" Y="3.75" Width="2.25" />
|
||||
<TypeIdentifier />
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
</ClassDiagram>
|
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ClassDiagram MajorVersion="1" MinorVersion="1">
|
||||
<Font Name="Tahoma" Size="8.25" />
|
||||
<Class Name="ProjectTracker.Library.Security.PTPrincipal" Collapsed="true">
|
||||
<Position X="3" Y="2.75" Width="1.75" />
|
||||
<TypeIdentifier>
|
||||
<FileName>Security\PTPrincipal.cs</FileName>
|
||||
<HashCode>AAAAAAAACAAAAAAAAAAAAAIAAAAAAAAAAAAQAAAAAAA=</HashCode>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
<Class Name="ProjectTracker.Library.Security.PTIdentity" Collapsed="true">
|
||||
<Position X="5.25" Y="2.75" Width="1.75" />
|
||||
<TypeIdentifier>
|
||||
<FileName>Security\PTIdentity.cs</FileName>
|
||||
<HashCode>AAAAIAAACAAABAAACAAAAAQgAAAEAAAAAAABAIAAABA=</HashCode>
|
||||
</TypeIdentifier>
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Class Name="Csla.Security.BusinessPrincipalBase" Collapsed="true">
|
||||
<Position X="3" Y="1.5" Width="1.75" />
|
||||
<TypeIdentifier />
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Class Name="Csla.ReadOnlyBase<T>" Collapsed="true">
|
||||
<Position X="5.25" Y="1.5" Width="1.75" />
|
||||
<TypeIdentifier />
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
</ClassDiagram>
|
@@ -0,0 +1,440 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using Csla;
|
||||
using Csla.Data;
|
||||
|
||||
namespace ProjectTracker.Library
|
||||
{
|
||||
[Serializable()]
|
||||
public class Project : BusinessBase<Project>
|
||||
{
|
||||
#region Business Methods
|
||||
|
||||
private Guid _id;
|
||||
private string _name = string.Empty;
|
||||
private SmartDate _started;
|
||||
private SmartDate _ended = new SmartDate(false);
|
||||
private string _description = string.Empty;
|
||||
private byte[] _timestamp = new byte[8];
|
||||
|
||||
private ProjectResources _resources =
|
||||
ProjectResources.NewProjectResources();
|
||||
|
||||
[System.ComponentModel.DataObjectField(true, true)]
|
||||
public Guid Id
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _id;
|
||||
}
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _name;
|
||||
}
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
set
|
||||
{
|
||||
CanWriteProperty(true);
|
||||
if (value == null) value = string.Empty;
|
||||
if (_name != value)
|
||||
{
|
||||
_name = value;
|
||||
PropertyHasChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string Started
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _started.Text;
|
||||
}
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
set
|
||||
{
|
||||
CanWriteProperty(true);
|
||||
if (value == null) value = string.Empty;
|
||||
if (_started != value)
|
||||
{
|
||||
_started.Text = value;
|
||||
PropertyHasChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string Ended
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _ended.Text;
|
||||
}
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
set
|
||||
{
|
||||
CanWriteProperty(true);
|
||||
if (value == null) value = string.Empty;
|
||||
if (_ended != value)
|
||||
{
|
||||
_ended.Text = value;
|
||||
PropertyHasChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string Description
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _description;
|
||||
}
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
set
|
||||
{
|
||||
CanWriteProperty(true);
|
||||
if (value == null) value = string.Empty;
|
||||
if (_description != value)
|
||||
{
|
||||
_description = value;
|
||||
PropertyHasChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ProjectResources Resources
|
||||
{
|
||||
get { return _resources; }
|
||||
}
|
||||
|
||||
public override bool IsValid
|
||||
{
|
||||
get { return base.IsValid && _resources.IsValid; }
|
||||
}
|
||||
|
||||
public override bool IsDirty
|
||||
{
|
||||
get { return base.IsDirty || _resources.IsDirty; }
|
||||
}
|
||||
|
||||
protected override object GetIdValue()
|
||||
{
|
||||
return _id;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Validation Rules
|
||||
|
||||
protected override void AddBusinessRules()
|
||||
{
|
||||
ValidationRules.AddRule(
|
||||
Csla.Validation.CommonRules.StringRequired, "Name");
|
||||
ValidationRules.AddRule(
|
||||
Csla.Validation.CommonRules.StringMaxLength,
|
||||
new Csla.Validation.CommonRules.MaxLengthRuleArgs("Name", 50));
|
||||
|
||||
ValidationRules.AddRule<Project>(
|
||||
StartDateGTEndDate<Project>, "Started");
|
||||
ValidationRules.AddRule<Project>(
|
||||
StartDateGTEndDate<Project>, "Ended");
|
||||
|
||||
ValidationRules.AddDependantProperty("Started", "Ended", true);
|
||||
}
|
||||
|
||||
private static bool StartDateGTEndDate<T>(
|
||||
T target, Csla.Validation.RuleArgs e) where T : Project
|
||||
{
|
||||
if (target._started > target._ended)
|
||||
{
|
||||
e.Description =
|
||||
"Start date can't be after end date";
|
||||
return false;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Authorization Rules
|
||||
|
||||
protected override void AddAuthorizationRules()
|
||||
{
|
||||
AuthorizationRules.AllowWrite(
|
||||
"Name", "ProjectManager");
|
||||
AuthorizationRules.AllowWrite(
|
||||
"Started", "ProjectManager");
|
||||
AuthorizationRules.AllowWrite(
|
||||
"Ended", "ProjectManager");
|
||||
AuthorizationRules.AllowWrite(
|
||||
"Description", "ProjectManager");
|
||||
}
|
||||
|
||||
public static bool CanAddObject()
|
||||
{
|
||||
return Csla.ApplicationContext.User.IsInRole(
|
||||
"ProjectManager");
|
||||
}
|
||||
|
||||
public static bool CanGetObject()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool CanDeleteObject()
|
||||
{
|
||||
bool result = false;
|
||||
if (Csla.ApplicationContext.User.IsInRole(
|
||||
"ProjectManager"))
|
||||
result = true;
|
||||
if (Csla.ApplicationContext.User.IsInRole(
|
||||
"Administrator"))
|
||||
result = true;
|
||||
return result;
|
||||
}
|
||||
|
||||
public static bool CanEditObject()
|
||||
{
|
||||
return Csla.ApplicationContext.User.IsInRole("ProjectManager");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Factory Methods
|
||||
|
||||
public static Project NewProject()
|
||||
{
|
||||
if (!CanAddObject())
|
||||
throw new System.Security.SecurityException(
|
||||
"User not authorized to add a project");
|
||||
return DataPortal.Create<Project>();
|
||||
}
|
||||
|
||||
public static Project GetProject(Guid id)
|
||||
{
|
||||
if (!CanGetObject())
|
||||
throw new System.Security.SecurityException(
|
||||
"User not authorized to view a project");
|
||||
return DataPortal.Fetch<Project>(new Criteria(id));
|
||||
}
|
||||
|
||||
public static void DeleteProject(Guid id)
|
||||
{
|
||||
if (!CanDeleteObject())
|
||||
throw new System.Security.SecurityException(
|
||||
"User not authorized to remove a project");
|
||||
DataPortal.Delete(new Criteria(id));
|
||||
}
|
||||
|
||||
private Project()
|
||||
{ /* require use of factory methods */ }
|
||||
|
||||
public override Project Save()
|
||||
{
|
||||
if (IsDeleted && !CanDeleteObject())
|
||||
throw new System.Security.SecurityException(
|
||||
"User not authorized to remove a project");
|
||||
else if (IsNew && !CanAddObject())
|
||||
throw new System.Security.SecurityException(
|
||||
"User not authorized to add a project");
|
||||
else if (!CanEditObject())
|
||||
throw new System.Security.SecurityException(
|
||||
"User not authorized to update a project");
|
||||
|
||||
return base.Save();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Data Access
|
||||
|
||||
[Serializable()]
|
||||
private class Criteria
|
||||
{
|
||||
private Guid _id;
|
||||
public Guid Id
|
||||
{
|
||||
get { return _id; }
|
||||
}
|
||||
|
||||
public Criteria(Guid id)
|
||||
{ _id = id; }
|
||||
}
|
||||
|
||||
[RunLocal()]
|
||||
protected override void DataPortal_Create()
|
||||
{
|
||||
_id = Guid.NewGuid();
|
||||
_started.Date = DateTime.Today;
|
||||
ValidationRules.CheckRules();
|
||||
}
|
||||
|
||||
private void DataPortal_Fetch(Criteria criteria)
|
||||
{
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "getProject";
|
||||
cm.Parameters.AddWithValue("@id", criteria.Id);
|
||||
|
||||
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
|
||||
{
|
||||
dr.Read();
|
||||
_id = dr.GetGuid("Id");
|
||||
_name = dr.GetString("Name");
|
||||
_started = dr.GetSmartDate("Started", _started.EmptyIsMin);
|
||||
_ended = dr.GetSmartDate("Ended", _ended.EmptyIsMin);
|
||||
_description = dr.GetString("Description");
|
||||
dr.GetBytes("LastChanged", 0, _timestamp, 0, 8);
|
||||
|
||||
// load child objects
|
||||
dr.NextResult();
|
||||
_resources = ProjectResources.GetProjectResources(dr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Transactional(TransactionalTypes.TransactionScope)]
|
||||
protected override void DataPortal_Insert()
|
||||
{
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandText = "addProject";
|
||||
DoInsertUpdate(cm);
|
||||
}
|
||||
}
|
||||
// update child objects
|
||||
_resources.Update(this);
|
||||
}
|
||||
|
||||
[Transactional(TransactionalTypes.TransactionScope)]
|
||||
protected override void DataPortal_Update()
|
||||
{
|
||||
if (base.IsDirty)
|
||||
{
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandText = "updateProject";
|
||||
cm.Parameters.AddWithValue("@lastChanged", _timestamp);
|
||||
DoInsertUpdate(cm);
|
||||
}
|
||||
}
|
||||
}
|
||||
// update child objects
|
||||
_resources.Update(this);
|
||||
}
|
||||
|
||||
private void DoInsertUpdate(SqlCommand cm)
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.Parameters.AddWithValue("@id", _id);
|
||||
cm.Parameters.AddWithValue("@name", _name);
|
||||
cm.Parameters.AddWithValue("@started", _started.DBValue);
|
||||
cm.Parameters.AddWithValue("@ended", _ended.DBValue);
|
||||
cm.Parameters.AddWithValue("@description", _description);
|
||||
SqlParameter param =
|
||||
new SqlParameter("@newLastChanged", SqlDbType.Timestamp);
|
||||
param.Direction = ParameterDirection.Output;
|
||||
cm.Parameters.Add(param);
|
||||
|
||||
cm.ExecuteNonQuery();
|
||||
|
||||
_timestamp = (byte[])cm.Parameters["@newLastChanged"].Value;
|
||||
}
|
||||
|
||||
[Transactional(TransactionalTypes.TransactionScope)]
|
||||
protected override void DataPortal_DeleteSelf()
|
||||
{
|
||||
DataPortal_Delete(new Criteria(_id));
|
||||
}
|
||||
|
||||
[Transactional(TransactionalTypes.TransactionScope)]
|
||||
private void DataPortal_Delete(Criteria criteria)
|
||||
{
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "deleteProject";
|
||||
cm.Parameters.AddWithValue("@id", criteria.Id);
|
||||
cm.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Exists
|
||||
|
||||
public static bool Exists(Guid id)
|
||||
{
|
||||
ExistsCommand result;
|
||||
result = DataPortal.Execute<ExistsCommand>
|
||||
(new ExistsCommand(id));
|
||||
return result.Exists;
|
||||
}
|
||||
|
||||
[Serializable()]
|
||||
private class ExistsCommand : CommandBase
|
||||
{
|
||||
private Guid _id;
|
||||
private bool _exists;
|
||||
|
||||
public bool Exists
|
||||
{
|
||||
get { return _exists; }
|
||||
}
|
||||
|
||||
public ExistsCommand(Guid id)
|
||||
{
|
||||
_id = id;
|
||||
}
|
||||
|
||||
protected override void DataPortal_Execute()
|
||||
{
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "existsProject";
|
||||
cm.Parameters.AddWithValue("@id", _id);
|
||||
int count = (int)cm.ExecuteScalar();
|
||||
_exists = (count > 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,53 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Data.SqlClient;
|
||||
using Csla;
|
||||
using Csla.Data;
|
||||
|
||||
namespace ProjectTracker.Library
|
||||
{
|
||||
[Serializable()]
|
||||
public class ProjectInfo :
|
||||
ReadOnlyBase<ProjectInfo>
|
||||
{
|
||||
#region Business Methods
|
||||
|
||||
private Guid _id;
|
||||
private string _name;
|
||||
|
||||
public Guid Id
|
||||
{
|
||||
get { return _id; }
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return _name; }
|
||||
}
|
||||
|
||||
protected override object GetIdValue()
|
||||
{
|
||||
return _id;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return _name;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
private ProjectInfo()
|
||||
{ /* require use of factory methods */ }
|
||||
|
||||
internal ProjectInfo(Guid id, string name)
|
||||
{
|
||||
_id = id;
|
||||
_name = name;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
@@ -0,0 +1,103 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using Csla;
|
||||
using Csla.Data;
|
||||
|
||||
namespace ProjectTracker.Library
|
||||
{
|
||||
[Serializable()]
|
||||
public class ProjectList :
|
||||
ReadOnlyListBase<ProjectList, ProjectInfo>
|
||||
{
|
||||
#region Factory Methods
|
||||
|
||||
/// <summary>
|
||||
/// Return a list of all projects.
|
||||
/// </summary>
|
||||
public static ProjectList GetProjectList()
|
||||
{
|
||||
return DataPortal.Fetch<ProjectList>(new Criteria());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return a list of projects filtered
|
||||
/// by project name.
|
||||
/// </summary>
|
||||
public static ProjectList GetProjectList(string name)
|
||||
{
|
||||
return DataPortal.Fetch<ProjectList>
|
||||
(new FilteredCriteria(name));
|
||||
}
|
||||
|
||||
private ProjectList()
|
||||
{ /* require use of factory methods */ }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Data Access
|
||||
|
||||
[Serializable()]
|
||||
private class Criteria
|
||||
{ /* no criteria - retrieve all projects */ }
|
||||
|
||||
[Serializable()]
|
||||
private class FilteredCriteria
|
||||
{
|
||||
private string _name;
|
||||
public string Name
|
||||
{
|
||||
get { return _name; }
|
||||
}
|
||||
|
||||
public FilteredCriteria(string name)
|
||||
{
|
||||
_name = name;
|
||||
}
|
||||
}
|
||||
|
||||
private void DataPortal_Fetch(Criteria criteria)
|
||||
{
|
||||
// fetch with no filter
|
||||
Fetch("");
|
||||
}
|
||||
|
||||
private void DataPortal_Fetch(FilteredCriteria criteria)
|
||||
{
|
||||
Fetch(criteria.Name);
|
||||
}
|
||||
|
||||
private void Fetch(string nameFilter)
|
||||
{
|
||||
this.RaiseListChangedEvents = false;
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "getProjects";
|
||||
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
|
||||
{
|
||||
IsReadOnly = false;
|
||||
while (dr.Read())
|
||||
{
|
||||
ProjectInfo info = new ProjectInfo(
|
||||
dr.GetGuid(0),
|
||||
dr.GetString(1));
|
||||
// apply filter if necessary
|
||||
if ((nameFilter.Length == 0) || (info.Name.IndexOf(nameFilter) == 0))
|
||||
this.Add(info);
|
||||
}
|
||||
IsReadOnly = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.RaiseListChangedEvents = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@@ -0,0 +1,228 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using Csla;
|
||||
using Csla.Data;
|
||||
using Csla.Validation;
|
||||
|
||||
namespace ProjectTracker.Library
|
||||
{
|
||||
[Serializable()]
|
||||
public class ProjectResource :
|
||||
BusinessBase<ProjectResource>, IHoldRoles
|
||||
{
|
||||
#region Business Methods
|
||||
|
||||
private int _resourceId;
|
||||
private string _firstName = string.Empty;
|
||||
private string _lastName = string.Empty;
|
||||
private SmartDate _assigned;
|
||||
private int _role;
|
||||
private byte[] _timestamp = new byte[8];
|
||||
|
||||
[System.ComponentModel.DataObjectField(false, true)]
|
||||
public int ResourceId
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _resourceId;
|
||||
}
|
||||
}
|
||||
|
||||
public string FirstName
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _firstName;
|
||||
}
|
||||
}
|
||||
|
||||
public string LastName
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _lastName;
|
||||
}
|
||||
}
|
||||
|
||||
public string FullName
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
if (CanReadProperty("FirstName") &&
|
||||
CanReadProperty("LastName"))
|
||||
return string.Format("{0}, {1}", LastName, FirstName);
|
||||
else
|
||||
throw new System.Security.SecurityException(
|
||||
"Property read not allowed");
|
||||
}
|
||||
}
|
||||
|
||||
public string Assigned
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _assigned.Text;
|
||||
}
|
||||
}
|
||||
|
||||
public int Role
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _role;
|
||||
}
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
set
|
||||
{
|
||||
CanWriteProperty(true);
|
||||
if (!_role.Equals(value))
|
||||
{
|
||||
_role = value;
|
||||
PropertyHasChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Resource GetResource()
|
||||
{
|
||||
return Resource.GetResource(_resourceId);
|
||||
}
|
||||
|
||||
protected override object GetIdValue()
|
||||
{
|
||||
return _resourceId;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Validation Rules
|
||||
|
||||
protected override void AddBusinessRules()
|
||||
{
|
||||
ValidationRules.AddRule(
|
||||
new Csla.Validation.RuleHandler(
|
||||
Assignment.ValidRole), "Role");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Authorization Rules
|
||||
|
||||
protected override void AddAuthorizationRules()
|
||||
{
|
||||
AuthorizationRules.AllowWrite(
|
||||
"Role", "ProjectManager");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Factory Methods
|
||||
|
||||
internal static ProjectResource NewProjectResource(int resourceId)
|
||||
{
|
||||
return new ProjectResource(
|
||||
Resource.GetResource(resourceId),
|
||||
RoleList.DefaultRole());
|
||||
}
|
||||
|
||||
internal static ProjectResource GetResource(SafeDataReader dr)
|
||||
{
|
||||
return new ProjectResource(dr);
|
||||
}
|
||||
|
||||
private ProjectResource()
|
||||
{
|
||||
MarkAsChild();
|
||||
}
|
||||
|
||||
private ProjectResource(Resource resource, int role)
|
||||
{
|
||||
MarkAsChild();
|
||||
_resourceId = resource.Id;
|
||||
_lastName = resource.LastName;
|
||||
_firstName = resource.FirstName;
|
||||
_assigned.Date = Assignment.GetDefaultAssignedDate();
|
||||
_role = role;
|
||||
}
|
||||
|
||||
private ProjectResource(SafeDataReader dr)
|
||||
{
|
||||
MarkAsChild();
|
||||
Fetch(dr);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Data Access
|
||||
|
||||
private void Fetch(SafeDataReader dr)
|
||||
{
|
||||
_resourceId = dr.GetInt32("ResourceId");
|
||||
_lastName = dr.GetString("LastName");
|
||||
_firstName = dr.GetString("FirstName");
|
||||
_assigned = dr.GetSmartDate("Assigned");
|
||||
_role = dr.GetInt32("Role");
|
||||
dr.GetBytes("LastChanged", 0, _timestamp, 0, 8);
|
||||
MarkOld();
|
||||
}
|
||||
|
||||
internal void Insert(Project project)
|
||||
{
|
||||
// if we're not dirty then don't update the database
|
||||
if (!this.IsDirty) return;
|
||||
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
_timestamp = Assignment.AddAssignment(
|
||||
cn, project.Id, _resourceId, _assigned, _role);
|
||||
MarkOld();
|
||||
}
|
||||
}
|
||||
|
||||
internal void Update(Project project)
|
||||
{
|
||||
// if we're not dirty then don't update the database
|
||||
if (!this.IsDirty) return;
|
||||
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
_timestamp = Assignment.UpdateAssignment(
|
||||
cn, project.Id, _resourceId, _assigned, _role, _timestamp);
|
||||
MarkOld();
|
||||
}
|
||||
}
|
||||
|
||||
internal void DeleteSelf(Project project)
|
||||
{
|
||||
// if we're not dirty then don't update the database
|
||||
if (!this.IsDirty) return;
|
||||
|
||||
// if we're new then don't update the database
|
||||
if (this.IsNew) return;
|
||||
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
Assignment.RemoveAssignment(cn, project.Id, _resourceId);
|
||||
MarkNew();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,125 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using Csla;
|
||||
using Csla.Data;
|
||||
|
||||
namespace ProjectTracker.Library
|
||||
{
|
||||
[Serializable()]
|
||||
public class ProjectResources :
|
||||
BusinessListBase<ProjectResources, ProjectResource>
|
||||
{
|
||||
#region Business Methods
|
||||
|
||||
public ProjectResource GetItem(int resourceId)
|
||||
{
|
||||
foreach (ProjectResource res in this)
|
||||
if (res.ResourceId == resourceId)
|
||||
return res;
|
||||
return null;
|
||||
}
|
||||
|
||||
public void Assign(int resourceId)
|
||||
{
|
||||
if (!Contains(resourceId))
|
||||
{
|
||||
ProjectResource resource =
|
||||
ProjectResource.NewProjectResource(resourceId);
|
||||
this.Add(resource);
|
||||
}
|
||||
else
|
||||
throw new InvalidOperationException(
|
||||
"Resource already assigned to project");
|
||||
}
|
||||
|
||||
public void Remove(int resourceId)
|
||||
{
|
||||
foreach (ProjectResource res in this)
|
||||
{
|
||||
if (res.ResourceId == resourceId)
|
||||
{
|
||||
Remove(res);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool Contains(int resourceId)
|
||||
{
|
||||
foreach (ProjectResource res in this)
|
||||
if (res.ResourceId == resourceId)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool ContainsDeleted(int resourceId)
|
||||
{
|
||||
foreach (ProjectResource res in DeletedList)
|
||||
if (res.ResourceId == resourceId)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Factory Methods
|
||||
|
||||
internal static ProjectResources NewProjectResources()
|
||||
{
|
||||
return new ProjectResources();
|
||||
}
|
||||
|
||||
internal static ProjectResources GetProjectResources(SafeDataReader dr)
|
||||
{
|
||||
return new ProjectResources(dr);
|
||||
}
|
||||
|
||||
private ProjectResources()
|
||||
{
|
||||
MarkAsChild();
|
||||
}
|
||||
|
||||
private ProjectResources(SafeDataReader dr)
|
||||
{
|
||||
MarkAsChild();
|
||||
Fetch(dr);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Data Access
|
||||
|
||||
// called to load data from the database
|
||||
private void Fetch(SafeDataReader dr)
|
||||
{
|
||||
this.RaiseListChangedEvents = false;
|
||||
while (dr.Read())
|
||||
this.Add(ProjectResource.GetResource(dr));
|
||||
this.RaiseListChangedEvents = true;
|
||||
}
|
||||
|
||||
internal void Update(Project project)
|
||||
{
|
||||
this.RaiseListChangedEvents = false;
|
||||
// update (thus deleting) any deleted child objects
|
||||
foreach (ProjectResource obj in DeletedList)
|
||||
obj.DeleteSelf(project);
|
||||
// now that they are deleted, remove them from memory too
|
||||
DeletedList.Clear();
|
||||
|
||||
// add/update any current child objects
|
||||
foreach (ProjectResource obj in this)
|
||||
{
|
||||
if (obj.IsNew)
|
||||
obj.Insert(project);
|
||||
else
|
||||
obj.Update(project);
|
||||
}
|
||||
this.RaiseListChangedEvents = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,74 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.50727</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ProjectTracker.Library</RootNamespace>
|
||||
<AssemblyName>ProjectTracker.Library</AssemblyName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Csla, Version=2.0.0.0, Culture=neutral, PublicKeyToken=93be5fdc093e4c30, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\csla20cs\Csla\bin\Debug\Csla.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Admin\Role.cs" />
|
||||
<Compile Include="Admin\Roles.cs" />
|
||||
<Compile Include="Assignment.cs" />
|
||||
<Compile Include="Database.cs" />
|
||||
<Compile Include="Project.cs" />
|
||||
<Compile Include="ProjectInfo.cs" />
|
||||
<Compile Include="ProjectList.cs" />
|
||||
<Compile Include="ProjectResource.cs" />
|
||||
<Compile Include="ProjectResources.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Resource.cs" />
|
||||
<Compile Include="ResourceAssignment.cs" />
|
||||
<Compile Include="ResourceAssignments.cs" />
|
||||
<Compile Include="ResourceInfo.cs" />
|
||||
<Compile Include="ResourceList.cs" />
|
||||
<Compile Include="RoleList.cs" />
|
||||
<Compile Include="Security\PTIdentity.cs" />
|
||||
<Compile Include="Security\PTPrincipal.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Diagrams\BaseClasses.cd" />
|
||||
<None Include="Diagrams\EditableObjects.cd" />
|
||||
<None Include="Diagrams\ReadOnlyObjects.cd" />
|
||||
<None Include="Diagrams\Security.cd" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
@@ -0,0 +1,35 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("ProjectTracker.Library")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Rockford Lhotka")]
|
||||
[assembly: AssemblyProduct("ProjectTracker")]
|
||||
[assembly: AssemblyCopyright("Copyright © Rockford Lhotka 2006")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("52a894db-5427-450c-9924-b11ce791853a")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
@@ -0,0 +1,395 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using Csla;
|
||||
using Csla.Data;
|
||||
using Csla.Validation;
|
||||
|
||||
namespace ProjectTracker.Library
|
||||
{
|
||||
|
||||
[Serializable()]
|
||||
public class Resource : BusinessBase<Resource>
|
||||
{
|
||||
|
||||
#region Business Methods
|
||||
|
||||
private int _id;
|
||||
private string _lastName = string.Empty;
|
||||
private string _firstName = string.Empty;
|
||||
private byte[] _timestamp = new byte[8];
|
||||
|
||||
private ResourceAssignments _assignments = ResourceAssignments.NewResourceAssignments();
|
||||
|
||||
[System.ComponentModel.DataObjectField(true, true)]
|
||||
public int Id
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _id;
|
||||
}
|
||||
}
|
||||
|
||||
public string LastName
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _lastName;
|
||||
}
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
set
|
||||
{
|
||||
CanWriteProperty(true);
|
||||
if (value == null) value = string.Empty;
|
||||
if (_lastName != value)
|
||||
{
|
||||
_lastName = value;
|
||||
PropertyHasChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string FirstName
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _firstName;
|
||||
}
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
set
|
||||
{
|
||||
CanWriteProperty();
|
||||
if (value == null) value = string.Empty;
|
||||
if (_firstName != value)
|
||||
{
|
||||
_firstName = value;
|
||||
PropertyHasChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
public string FullName
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
if (CanReadProperty("FirstName") && CanReadProperty("LastName"))
|
||||
return string.Format("{0}, {1}", _lastName, _firstName);
|
||||
else
|
||||
throw new System.Security.SecurityException("Property read not allowed");
|
||||
}
|
||||
}
|
||||
|
||||
public ResourceAssignments Assignments
|
||||
{
|
||||
get { return _assignments; }
|
||||
}
|
||||
|
||||
public override bool IsValid
|
||||
{
|
||||
get { return base.IsValid && _assignments.IsValid; }
|
||||
}
|
||||
|
||||
public override bool IsDirty
|
||||
{
|
||||
get { return base.IsDirty || _assignments.IsDirty; }
|
||||
}
|
||||
|
||||
protected override object GetIdValue()
|
||||
{
|
||||
return _id;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Validation Rules
|
||||
|
||||
protected override void AddBusinessRules()
|
||||
{
|
||||
ValidationRules.AddRule(new RuleHandler(CommonRules.StringRequired), "FirstName");
|
||||
ValidationRules.AddRule(new RuleHandler(CommonRules.StringMaxLength),
|
||||
new CommonRules.MaxLengthRuleArgs("FirstName", 50));
|
||||
|
||||
ValidationRules.AddRule(new RuleHandler(CommonRules.StringMaxLength),
|
||||
new CommonRules.MaxLengthRuleArgs("LastName", 50));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Authorization Rules
|
||||
|
||||
protected override void AddAuthorizationRules()
|
||||
{
|
||||
// add AuthorizationRules here
|
||||
AuthorizationRules.AllowWrite("LastName", "ProjectManager");
|
||||
AuthorizationRules.AllowWrite("FirstName", "ProjectManager");
|
||||
}
|
||||
|
||||
public static bool CanAddObject()
|
||||
{
|
||||
return Csla.ApplicationContext.User.IsInRole("ProjectManager");
|
||||
}
|
||||
|
||||
public static bool CanGetObject()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool CanDeleteObject()
|
||||
{
|
||||
bool result = false;
|
||||
if (Csla.ApplicationContext.User.IsInRole("ProjectManager"))
|
||||
result = true;
|
||||
if (Csla.ApplicationContext.User.IsInRole("Administrator"))
|
||||
result = true;
|
||||
return result;
|
||||
}
|
||||
|
||||
public static bool CanEditObject()
|
||||
{
|
||||
return Csla.ApplicationContext.User.IsInRole("ProjectManager");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Factory Methods
|
||||
|
||||
public static Resource NewResource()
|
||||
{
|
||||
if (!CanAddObject())
|
||||
throw new System.Security.SecurityException(
|
||||
"User not authorized to add a resource");
|
||||
return DataPortal.Create<Resource>();
|
||||
}
|
||||
|
||||
public static void DeleteResource(int id)
|
||||
{
|
||||
if (!CanDeleteObject())
|
||||
throw new System.Security.SecurityException(
|
||||
"User not authorized to remove a resource");
|
||||
DataPortal.Delete(new Criteria(id));
|
||||
}
|
||||
|
||||
public static Resource GetResource(int id)
|
||||
{
|
||||
if (!CanGetObject())
|
||||
throw new System.Security.SecurityException(
|
||||
"User not authorized to view a resource");
|
||||
return DataPortal.Fetch<Resource>(new Criteria(id));
|
||||
}
|
||||
|
||||
public override Resource Save()
|
||||
{
|
||||
if (IsDeleted && !CanDeleteObject())
|
||||
throw new System.Security.SecurityException(
|
||||
"User not authorized to remove a resource");
|
||||
else if (IsNew && !CanAddObject())
|
||||
throw new System.Security.SecurityException(
|
||||
"User not authorized to add a resource");
|
||||
else if (!CanEditObject())
|
||||
throw new System.Security.SecurityException(
|
||||
"User not authorized to update a resource");
|
||||
return base.Save();
|
||||
}
|
||||
|
||||
private Resource()
|
||||
{ /* require use of factory methods */ }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Data Access
|
||||
|
||||
[Serializable()]
|
||||
private class Criteria
|
||||
{
|
||||
private int _id;
|
||||
public int Id
|
||||
{
|
||||
get { return _id; }
|
||||
}
|
||||
|
||||
public Criteria(int id)
|
||||
{ _id = id; }
|
||||
}
|
||||
|
||||
[RunLocal()]
|
||||
protected override void DataPortal_Create()
|
||||
{
|
||||
// nothing to initialize
|
||||
ValidationRules.CheckRules();
|
||||
}
|
||||
|
||||
private void DataPortal_Fetch(Criteria criteria)
|
||||
{
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "getResource";
|
||||
cm.Parameters.AddWithValue("@id", criteria.Id);
|
||||
|
||||
using (SafeDataReader dr =
|
||||
new SafeDataReader(cm.ExecuteReader()))
|
||||
{
|
||||
dr.Read();
|
||||
_id = dr.GetInt32("Id");
|
||||
_lastName = dr.GetString("LastName");
|
||||
_firstName = dr.GetString("FirstName");
|
||||
dr.GetBytes("LastChanged", 0, _timestamp, 0, 8);
|
||||
|
||||
// load child objects
|
||||
dr.NextResult();
|
||||
_assignments =
|
||||
ResourceAssignments.GetResourceAssignments(dr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Transactional(TransactionalTypes.TransactionScope)]
|
||||
protected override void DataPortal_Insert()
|
||||
{
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
ApplicationContext.LocalContext["cn"] = cn;
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "addResource";
|
||||
cm.Parameters.AddWithValue("@lastName", _lastName);
|
||||
cm.Parameters.AddWithValue("@firstName", _firstName);
|
||||
SqlParameter param =
|
||||
new SqlParameter("@newId",SqlDbType.Int);
|
||||
param.Direction = ParameterDirection.Output;
|
||||
cm.Parameters.Add(param);
|
||||
param = new SqlParameter("@newLastChanged", SqlDbType.Timestamp);
|
||||
param.Direction = ParameterDirection.Output;
|
||||
cm.Parameters.Add(param);
|
||||
|
||||
cm.ExecuteNonQuery();
|
||||
|
||||
_id = (int)cm.Parameters["@newId"].Value;
|
||||
_timestamp = (byte[])cm.Parameters["@newLastChanged"].Value;
|
||||
}
|
||||
// update child objects
|
||||
_assignments.Update(this);
|
||||
// removing of item only needed for local data portal
|
||||
if (ApplicationContext.ExecutionLocation==ApplicationContext.ExecutionLocations.Client)
|
||||
ApplicationContext.LocalContext.Remove("cn");
|
||||
}
|
||||
}
|
||||
|
||||
[Transactional(TransactionalTypes.TransactionScope)]
|
||||
protected override void DataPortal_Update()
|
||||
{
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
ApplicationContext.LocalContext["cn"] = cn;
|
||||
if (base.IsDirty)
|
||||
{
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "updateResource";
|
||||
cm.Parameters.AddWithValue("@id", _id);
|
||||
cm.Parameters.AddWithValue("@lastName", _lastName);
|
||||
cm.Parameters.AddWithValue("@firstName", _firstName);
|
||||
cm.Parameters.AddWithValue("@lastChanged", _timestamp);
|
||||
SqlParameter param =
|
||||
new SqlParameter("@newLastChanged", SqlDbType.Timestamp);
|
||||
param.Direction = ParameterDirection.Output;
|
||||
cm.Parameters.Add(param);
|
||||
|
||||
cm.ExecuteNonQuery();
|
||||
|
||||
_timestamp = (byte[])cm.Parameters["@newLastChanged"].Value;
|
||||
}
|
||||
}
|
||||
// update child objects
|
||||
_assignments.Update(this);
|
||||
// removing of item only needed for local data portal
|
||||
if (ApplicationContext.ExecutionLocation == ApplicationContext.ExecutionLocations.Client)
|
||||
ApplicationContext.LocalContext.Remove("cn");
|
||||
}
|
||||
}
|
||||
|
||||
[Transactional(TransactionalTypes.TransactionScope)]
|
||||
protected override void DataPortal_DeleteSelf()
|
||||
{
|
||||
DataPortal_Delete(new Criteria(_id));
|
||||
}
|
||||
|
||||
[Transactional(TransactionalTypes.TransactionScope)]
|
||||
private void DataPortal_Delete(Criteria criteria)
|
||||
{
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "deleteResource";
|
||||
cm.Parameters.AddWithValue("@id", criteria.Id);
|
||||
cm.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Exists
|
||||
|
||||
public static bool Exists(string id)
|
||||
{
|
||||
ExistsCommand result;
|
||||
result = DataPortal.Execute<ExistsCommand>(new ExistsCommand(id));
|
||||
return result.Exists;
|
||||
}
|
||||
|
||||
[Serializable()]
|
||||
private class ExistsCommand : CommandBase
|
||||
{
|
||||
|
||||
private string _id;
|
||||
private bool _exists;
|
||||
|
||||
public bool Exists
|
||||
{
|
||||
get { return _exists; }
|
||||
}
|
||||
|
||||
public ExistsCommand(string id)
|
||||
{
|
||||
_id = id;
|
||||
}
|
||||
|
||||
protected override void DataPortal_Execute()
|
||||
{
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "existsResource";
|
||||
cm.Parameters.AddWithValue("@id", _id);
|
||||
int count = (int)cm.ExecuteScalar();
|
||||
_exists = (count > 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,192 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using Csla;
|
||||
using Csla.Data;
|
||||
|
||||
namespace ProjectTracker.Library
|
||||
{
|
||||
[Serializable()]
|
||||
public class ResourceAssignment : BusinessBase<ResourceAssignment>, IHoldRoles
|
||||
{
|
||||
#region Business Methods
|
||||
|
||||
private Guid _projectId = Guid.Empty;
|
||||
private string _projectName = string.Empty;
|
||||
private SmartDate _assigned = new SmartDate(DateTime.Today);
|
||||
private int _role;
|
||||
private byte[] _timestamp = new byte[8];
|
||||
|
||||
public Guid ProjectId
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _projectId;
|
||||
}
|
||||
}
|
||||
|
||||
public string ProjectName
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _projectName;
|
||||
}
|
||||
}
|
||||
|
||||
public string Assigned
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _assigned.Text;
|
||||
}
|
||||
}
|
||||
|
||||
public int Role
|
||||
{
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
get
|
||||
{
|
||||
CanReadProperty(true);
|
||||
return _role;
|
||||
}
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
set
|
||||
{
|
||||
CanWriteProperty(true);
|
||||
if (!_role.Equals(value))
|
||||
{
|
||||
_role = value;
|
||||
PropertyHasChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Project GetProject()
|
||||
{
|
||||
return Project.GetProject(_projectId);
|
||||
}
|
||||
|
||||
protected override object GetIdValue()
|
||||
{
|
||||
return _projectId;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Validation Rules
|
||||
|
||||
protected override void AddBusinessRules()
|
||||
{
|
||||
ValidationRules.AddRule(
|
||||
new Csla.Validation.RuleHandler(
|
||||
Assignment.ValidRole), "Role");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Authorization Rules
|
||||
|
||||
protected override void AddAuthorizationRules()
|
||||
{
|
||||
AuthorizationRules.AllowWrite(
|
||||
"Role", "ProjectManager");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Factory Methods
|
||||
|
||||
internal static ResourceAssignment NewResourceAssignment(
|
||||
Guid projectId)
|
||||
{
|
||||
return new ResourceAssignment(
|
||||
Project.GetProject(projectId), RoleList.DefaultRole());
|
||||
}
|
||||
|
||||
internal static ResourceAssignment GetResourceAssignment(
|
||||
SafeDataReader dr)
|
||||
{
|
||||
return new ResourceAssignment(dr);
|
||||
}
|
||||
|
||||
private ResourceAssignment()
|
||||
{ MarkAsChild(); }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Data Access
|
||||
|
||||
/// <summary>
|
||||
/// Called to when a new object is created.
|
||||
/// </summary>
|
||||
private ResourceAssignment(Project project, int role)
|
||||
{
|
||||
MarkAsChild();
|
||||
_projectId = project.Id;
|
||||
_projectName = project.Name;
|
||||
_assigned.Date = Assignment.GetDefaultAssignedDate();
|
||||
_role = role;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when loading data from the database.
|
||||
/// </summary>
|
||||
private ResourceAssignment(SafeDataReader dr)
|
||||
{
|
||||
MarkAsChild();
|
||||
_projectId = dr.GetGuid("ProjectId");
|
||||
_projectName = dr.GetString("Name");
|
||||
_assigned = dr.GetSmartDate("Assigned");
|
||||
_role = dr.GetInt32("Role");
|
||||
dr.GetBytes("LastChanged", 0, _timestamp, 0, 8);
|
||||
MarkOld();
|
||||
}
|
||||
|
||||
internal void Insert(Resource resource)
|
||||
{
|
||||
SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"];
|
||||
|
||||
// if we're not dirty then don't update the database
|
||||
if (!this.IsDirty) return;
|
||||
|
||||
_timestamp = Assignment.AddAssignment(
|
||||
cn, _projectId, resource.Id, _assigned, _role);
|
||||
MarkOld();
|
||||
}
|
||||
|
||||
internal void Update(Resource resource)
|
||||
{
|
||||
SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"];
|
||||
|
||||
// if we're not dirty then don't update the database
|
||||
if (!this.IsDirty) return;
|
||||
|
||||
_timestamp = Assignment.UpdateAssignment(
|
||||
cn, _projectId, resource.Id, _assigned, _role, _timestamp);
|
||||
MarkOld();
|
||||
}
|
||||
|
||||
internal void DeleteSelf(Resource resource)
|
||||
{
|
||||
SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"];
|
||||
|
||||
// if we're not dirty then don't update the database
|
||||
if (!this.IsDirty) return;
|
||||
|
||||
// if we're new then don't update the database
|
||||
if (this.IsNew) return;
|
||||
|
||||
Assignment.RemoveAssignment(cn, _projectId, resource.Id);
|
||||
MarkNew();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,123 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using Csla;
|
||||
using Csla.Data;
|
||||
|
||||
namespace ProjectTracker.Library
|
||||
{
|
||||
[Serializable()]
|
||||
public class ResourceAssignments : BusinessListBase<ResourceAssignments, ResourceAssignment>
|
||||
{
|
||||
#region Business Methods
|
||||
|
||||
public ResourceAssignment this[Guid projectId]
|
||||
{
|
||||
get
|
||||
{
|
||||
foreach (ResourceAssignment res in this)
|
||||
if (res.ProjectId.Equals(projectId))
|
||||
return res;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public void AssignTo(Guid projectId)
|
||||
{
|
||||
if (!Contains(projectId))
|
||||
{
|
||||
ResourceAssignment project = ResourceAssignment.NewResourceAssignment(projectId);
|
||||
this.Add(project);
|
||||
}
|
||||
else
|
||||
throw new InvalidOperationException("Resource already assigned to project");
|
||||
}
|
||||
|
||||
public void Remove(Guid projectId)
|
||||
{
|
||||
foreach (ResourceAssignment res in this)
|
||||
{
|
||||
if (res.ProjectId.Equals(projectId))
|
||||
{
|
||||
Remove(res);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool Contains(Guid projectId)
|
||||
{
|
||||
foreach (ResourceAssignment project in this)
|
||||
if (project.ProjectId == projectId)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool ContainsDeleted(Guid projectId)
|
||||
{
|
||||
foreach (ResourceAssignment project in DeletedList)
|
||||
if (project.ProjectId == projectId)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Factory Methods
|
||||
|
||||
internal static ResourceAssignments NewResourceAssignments()
|
||||
{
|
||||
return new ResourceAssignments();
|
||||
}
|
||||
|
||||
internal static ResourceAssignments GetResourceAssignments(SafeDataReader dr)
|
||||
{
|
||||
return new ResourceAssignments(dr);
|
||||
}
|
||||
|
||||
private ResourceAssignments()
|
||||
{
|
||||
MarkAsChild();
|
||||
}
|
||||
|
||||
private ResourceAssignments(SafeDataReader dr)
|
||||
{
|
||||
MarkAsChild();
|
||||
Fetch(dr);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Data Access
|
||||
|
||||
private void Fetch(SafeDataReader dr)
|
||||
{
|
||||
RaiseListChangedEvents = false;
|
||||
while (dr.Read())
|
||||
this.Add(ResourceAssignment.GetResourceAssignment(dr));
|
||||
RaiseListChangedEvents = true;
|
||||
}
|
||||
|
||||
internal void Update(Resource resource)
|
||||
{
|
||||
RaiseListChangedEvents = false;
|
||||
// update (thus deleting) any deleted child objects
|
||||
foreach (ResourceAssignment item in DeletedList)
|
||||
item.DeleteSelf(resource);
|
||||
// now that they are deleted, remove them from memory too
|
||||
DeletedList.Clear();
|
||||
|
||||
// add/update any current child objects
|
||||
foreach (ResourceAssignment item in this)
|
||||
{
|
||||
if (item.IsNew)
|
||||
item.Insert(resource);
|
||||
else
|
||||
item.Update(resource);
|
||||
}
|
||||
RaiseListChangedEvents = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@@ -0,0 +1,56 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Data.SqlClient;
|
||||
using Csla;
|
||||
using Csla.Data;
|
||||
|
||||
namespace ProjectTracker.Library
|
||||
{
|
||||
[Serializable()]
|
||||
public class ResourceInfo :
|
||||
ReadOnlyBase<ResourceInfo>
|
||||
{
|
||||
#region Business Methods
|
||||
|
||||
private int _id;
|
||||
private string _name;
|
||||
|
||||
public int Id
|
||||
{
|
||||
get { return _id; }
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return _name; }
|
||||
}
|
||||
|
||||
protected override object GetIdValue()
|
||||
{
|
||||
return _id;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return _name;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
private ResourceInfo()
|
||||
{ /* require use of factory methods */ }
|
||||
|
||||
internal ResourceInfo(SafeDataReader dr)
|
||||
{
|
||||
_id = dr.GetInt32("Id");
|
||||
_name = string.Format("{0}, {1}",
|
||||
dr.GetString("LastName"),
|
||||
dr.GetString("FirstName"));
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@@ -0,0 +1,61 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using Csla;
|
||||
using Csla.Data;
|
||||
|
||||
namespace ProjectTracker.Library
|
||||
{
|
||||
[Serializable()]
|
||||
public class ResourceList :
|
||||
ReadOnlyListBase<ResourceList, ResourceInfo>
|
||||
{
|
||||
#region Factory Methods
|
||||
|
||||
public static ResourceList GetResourceList()
|
||||
{
|
||||
return DataPortal.Fetch<ResourceList>(new Criteria());
|
||||
}
|
||||
|
||||
private ResourceList()
|
||||
{ /* require use of factory methods */ }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Data Access
|
||||
|
||||
[Serializable()]
|
||||
private class Criteria
|
||||
{ /* no criteria - retrieve all resources */ }
|
||||
|
||||
private void DataPortal_Fetch(Criteria criteria)
|
||||
{
|
||||
this.RaiseListChangedEvents = false;
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "getResources";
|
||||
|
||||
using (SafeDataReader dr =
|
||||
new SafeDataReader(cm.ExecuteReader()))
|
||||
{
|
||||
IsReadOnly = false;
|
||||
while (dr.Read())
|
||||
{
|
||||
ResourceInfo info = new ResourceInfo(dr);
|
||||
this.Add(info);
|
||||
}
|
||||
IsReadOnly = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.RaiseListChangedEvents = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using Csla;
|
||||
using Csla.Data;
|
||||
|
||||
namespace ProjectTracker.Library
|
||||
{
|
||||
[Serializable()]
|
||||
public class RoleList :
|
||||
NameValueListBase<int, string>
|
||||
{
|
||||
#region Business Methods
|
||||
|
||||
public static int DefaultRole()
|
||||
{
|
||||
RoleList list = GetList();
|
||||
if (list.Count > 0)
|
||||
return list.Items[0].Key;
|
||||
else
|
||||
throw new NullReferenceException(
|
||||
"No roles available; default role can not be returned");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Factory Methods
|
||||
|
||||
private static RoleList _list;
|
||||
|
||||
/// <summary>
|
||||
/// Returns a list of roles.
|
||||
/// </summary>
|
||||
public static RoleList GetList()
|
||||
{
|
||||
if (_list == null)
|
||||
_list = DataPortal.Fetch<RoleList>
|
||||
(new Criteria(typeof(RoleList)));
|
||||
return _list;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clears the in-memory RoleList cache
|
||||
/// so the list of roles is reloaded on
|
||||
/// next request.
|
||||
/// </summary>
|
||||
public static void InvalidateCache()
|
||||
{
|
||||
_list = null;
|
||||
}
|
||||
|
||||
private RoleList()
|
||||
{ /* require use of factory methods */ }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Data Access
|
||||
|
||||
private void DataPortal_Fetch(Criteria criteria)
|
||||
{
|
||||
this.RaiseListChangedEvents = false;
|
||||
using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection))
|
||||
{
|
||||
cn.Open();
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "getRoles";
|
||||
|
||||
using (SafeDataReader dr =
|
||||
new SafeDataReader(cm.ExecuteReader()))
|
||||
{
|
||||
IsReadOnly = false;
|
||||
while (dr.Read())
|
||||
{
|
||||
this.Add(new NameValuePair(
|
||||
dr.GetInt32("id"), dr.GetString("name")));
|
||||
}
|
||||
IsReadOnly = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.RaiseListChangedEvents = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@@ -0,0 +1,128 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Collections.Generic;
|
||||
using System.Security.Principal;
|
||||
using Csla;
|
||||
|
||||
namespace ProjectTracker.Library.Security
|
||||
{
|
||||
[Serializable()]
|
||||
public class PTIdentity :
|
||||
ReadOnlyBase<PTIdentity>, IIdentity
|
||||
{
|
||||
#region Business Methods
|
||||
|
||||
private bool _isAuthenticated;
|
||||
private string _name = string.Empty;
|
||||
private List<string> _roles = new List<string>();
|
||||
|
||||
public string AuthenticationType
|
||||
{
|
||||
get { return "Csla"; }
|
||||
}
|
||||
|
||||
public bool IsAuthenticated
|
||||
{
|
||||
get { return _isAuthenticated; }
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return _name; }
|
||||
}
|
||||
|
||||
protected override object GetIdValue()
|
||||
{
|
||||
return _name;
|
||||
}
|
||||
|
||||
internal bool IsInRole(string role)
|
||||
{
|
||||
return _roles.Contains(role);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Factory Methods
|
||||
|
||||
internal static PTIdentity UnauthenticatedIdentity()
|
||||
{
|
||||
return new PTIdentity();
|
||||
}
|
||||
|
||||
internal static PTIdentity GetIdentity(
|
||||
string username, string password)
|
||||
{
|
||||
return DataPortal.Fetch<PTIdentity>
|
||||
(new Criteria(username, password));
|
||||
}
|
||||
|
||||
private PTIdentity()
|
||||
{ /* require use of factory methods */ }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Data Access
|
||||
|
||||
[Serializable()]
|
||||
private class Criteria
|
||||
{
|
||||
private string _username;
|
||||
public string Username
|
||||
{
|
||||
get { return _username; }
|
||||
}
|
||||
|
||||
private string _password;
|
||||
public string Password
|
||||
{
|
||||
get { return _password; }
|
||||
}
|
||||
|
||||
public Criteria(string username, string password)
|
||||
{
|
||||
_username = username;
|
||||
_password = password;
|
||||
}
|
||||
}
|
||||
|
||||
private void DataPortal_Fetch(Criteria criteria)
|
||||
{
|
||||
using (SqlConnection cn =
|
||||
new SqlConnection(Database.SecurityConnection))
|
||||
{
|
||||
cn.Open();
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandText = "Login";
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.Parameters.AddWithValue("@user", criteria.Username);
|
||||
cm.Parameters.AddWithValue("@pw", criteria.Password);
|
||||
using (SqlDataReader dr = cm.ExecuteReader())
|
||||
{
|
||||
if (dr.Read())
|
||||
{
|
||||
_name = criteria.Username;
|
||||
_isAuthenticated = true;
|
||||
if (dr.NextResult())
|
||||
{
|
||||
while (dr.Read())
|
||||
{
|
||||
_roles.Add(dr.GetString(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_name = string.Empty;
|
||||
_isAuthenticated = false;
|
||||
_roles.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Security.Principal;
|
||||
|
||||
namespace ProjectTracker.Library.Security
|
||||
{
|
||||
[Serializable()]
|
||||
public class PTPrincipal : Csla.Security.BusinessPrincipalBase
|
||||
{
|
||||
|
||||
private PTPrincipal(IIdentity identity)
|
||||
: base(identity) { }
|
||||
|
||||
public static bool Login(string username, string password)
|
||||
{
|
||||
PTIdentity identity =
|
||||
PTIdentity.GetIdentity(username, password);
|
||||
if (identity.IsAuthenticated)
|
||||
{
|
||||
PTPrincipal principal = new PTPrincipal(identity);
|
||||
Csla.ApplicationContext.User = principal;
|
||||
}
|
||||
return identity.IsAuthenticated;
|
||||
}
|
||||
|
||||
public static void Logout()
|
||||
{
|
||||
PTIdentity identity = PTIdentity.UnauthenticatedIdentity();
|
||||
PTPrincipal principal = new PTPrincipal(identity);
|
||||
Csla.ApplicationContext.User = principal;
|
||||
}
|
||||
|
||||
public override bool IsInRole(string role)
|
||||
{
|
||||
PTIdentity identity = (PTIdentity)this.Identity;
|
||||
return identity.IsInRole(role);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,198 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 9.00
|
||||
# Visual Studio 2005
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PTWin", "PTWin\PTWin.csproj", "{DAB85BA2-86A3-4D3B-8D34-324D939D952C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectTracker.Library", "ProjectTracker.Library\ProjectTracker.Library.csproj", "{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}"
|
||||
EndProject
|
||||
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "C:\...\PTWeb\", "www\PTWeb\", "{D8F59D26-50C8-4DFD-B8B9-C529530297F1}"
|
||||
ProjectSection(WebsiteProperties) = preProject
|
||||
ProjectReferences = "{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}|ProjectTracker.Library.dll;{B390C88E-66FD-4E84-8149-29852AFA8723}|EnterpriseServicesHostcs.dll;"
|
||||
Debug.AspNetCompiler.VirtualPath = "/PTWeb"
|
||||
Debug.AspNetCompiler.PhysicalPath = "www\PTWeb\"
|
||||
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\PTWeb\"
|
||||
Debug.AspNetCompiler.Updateable = "true"
|
||||
Debug.AspNetCompiler.ForceOverwrite = "true"
|
||||
Debug.AspNetCompiler.FixedNames = "false"
|
||||
Debug.AspNetCompiler.Debug = "True"
|
||||
Release.AspNetCompiler.VirtualPath = "/PTWeb"
|
||||
Release.AspNetCompiler.PhysicalPath = "www\PTWeb\"
|
||||
Release.AspNetCompiler.TargetPath = "PrecompiledWeb\PTWeb\"
|
||||
Release.AspNetCompiler.Updateable = "true"
|
||||
Release.AspNetCompiler.ForceOverwrite = "true"
|
||||
Release.AspNetCompiler.FixedNames = "false"
|
||||
Release.AspNetCompiler.Debug = "False"
|
||||
VWDPort = "2161"
|
||||
DefaultWebSiteLanguage = "Visual C#"
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{FAC3F50C-78A8-4F17-A4E3-B6BAE7BB612F}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
license.txt = license.txt
|
||||
readme.txt = readme.txt
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{4F174C21-8C12-11D0-8340-0000F80270F8}") = "PTData", "PTData\PTData.dbp", "{09B6FE9B-E21E-4454-8E64-928422F60E08}"
|
||||
EndProject
|
||||
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "C:\...\RemotingHost\", "www\RemotingHost\", "{5A15CF97-BBA1-4C15-990D-AF08907C8A0C}"
|
||||
ProjectSection(WebsiteProperties) = preProject
|
||||
ProjectReferences = "{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}|ProjectTracker.Library.dll;"
|
||||
Debug.AspNetCompiler.VirtualPath = "/RemotingHost"
|
||||
Debug.AspNetCompiler.PhysicalPath = "www\RemotingHost\"
|
||||
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\RemotingHost\"
|
||||
Debug.AspNetCompiler.Updateable = "true"
|
||||
Debug.AspNetCompiler.ForceOverwrite = "true"
|
||||
Debug.AspNetCompiler.FixedNames = "false"
|
||||
Debug.AspNetCompiler.Debug = "True"
|
||||
Release.AspNetCompiler.VirtualPath = "/RemotingHost"
|
||||
Release.AspNetCompiler.PhysicalPath = "www\RemotingHost\"
|
||||
Release.AspNetCompiler.TargetPath = "PrecompiledWeb\RemotingHost\"
|
||||
Release.AspNetCompiler.Updateable = "true"
|
||||
Release.AspNetCompiler.ForceOverwrite = "true"
|
||||
Release.AspNetCompiler.FixedNames = "false"
|
||||
Release.AspNetCompiler.Debug = "False"
|
||||
VWDPort = "3187"
|
||||
DefaultWebSiteLanguage = "Visual C#"
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "C:\...\PTWebService\", "www\PTWebService\", "{86BA904A-AC1A-4CC1-AA54-98F3A090AD83}"
|
||||
ProjectSection(WebsiteProperties) = preProject
|
||||
ProjectReferences = "{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}|ProjectTracker.Library.dll;{B390C88E-66FD-4E84-8149-29852AFA8723}|EnterpriseServicesHostcs.dll;"
|
||||
Debug.AspNetCompiler.VirtualPath = "/PTWebService"
|
||||
Debug.AspNetCompiler.PhysicalPath = "www\PTWebService\"
|
||||
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\PTWebService\"
|
||||
Debug.AspNetCompiler.Updateable = "true"
|
||||
Debug.AspNetCompiler.ForceOverwrite = "true"
|
||||
Debug.AspNetCompiler.FixedNames = "false"
|
||||
Debug.AspNetCompiler.Debug = "True"
|
||||
Release.AspNetCompiler.VirtualPath = "/PTWebService"
|
||||
Release.AspNetCompiler.PhysicalPath = "www\PTWebService\"
|
||||
Release.AspNetCompiler.TargetPath = "PrecompiledWeb\PTWebService\"
|
||||
Release.AspNetCompiler.Updateable = "true"
|
||||
Release.AspNetCompiler.ForceOverwrite = "true"
|
||||
Release.AspNetCompiler.FixedNames = "false"
|
||||
Release.AspNetCompiler.Debug = "False"
|
||||
VWDPort = "7411"
|
||||
DefaultWebSiteLanguage = "Visual C#"
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PTServiceClient", "PTServiceClient\PTServiceClient.csproj", "{457C09F3-B15D-474F-A761-DC3419E745EF}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnterpriseServicesHostcs", "EnterpriseServicesHostcs\EnterpriseServicesHostcs.csproj", "{B390C88E-66FD-4E84-8149-29852AFA8723}"
|
||||
EndProject
|
||||
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "C:\...\WebServicesHost\", "www\WebServicesHost\", "{68865A7C-0792-4757-89D1-874F5A2FF551}"
|
||||
ProjectSection(WebsiteProperties) = preProject
|
||||
ProjectReferences = "{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}|ProjectTracker.Library.dll;"
|
||||
Debug.AspNetCompiler.VirtualPath = "/WebServicesHost"
|
||||
Debug.AspNetCompiler.PhysicalPath = "www\WebServicesHost\"
|
||||
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\WebServicesHost\"
|
||||
Debug.AspNetCompiler.Updateable = "true"
|
||||
Debug.AspNetCompiler.ForceOverwrite = "true"
|
||||
Debug.AspNetCompiler.FixedNames = "false"
|
||||
Debug.AspNetCompiler.Debug = "True"
|
||||
Release.AspNetCompiler.VirtualPath = "/WebServicesHost"
|
||||
Release.AspNetCompiler.PhysicalPath = "www\WebServicesHost\"
|
||||
Release.AspNetCompiler.TargetPath = "PrecompiledWeb\WebServicesHost\"
|
||||
Release.AspNetCompiler.Updateable = "true"
|
||||
Release.AspNetCompiler.ForceOverwrite = "true"
|
||||
Release.AspNetCompiler.FixedNames = "false"
|
||||
Release.AspNetCompiler.Debug = "False"
|
||||
VWDPort = "4334"
|
||||
DefaultWebSiteLanguage = "Visual C#"
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|.NET = Debug|.NET
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
||||
Release|.NET = Release|.NET
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|Mixed Platforms = Release|Mixed Platforms
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{DAB85BA2-86A3-4D3B-8D34-324D939D952C}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{DAB85BA2-86A3-4D3B-8D34-324D939D952C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DAB85BA2-86A3-4D3B-8D34-324D939D952C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DAB85BA2-86A3-4D3B-8D34-324D939D952C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{DAB85BA2-86A3-4D3B-8D34-324D939D952C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{DAB85BA2-86A3-4D3B-8D34-324D939D952C}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||
{DAB85BA2-86A3-4D3B-8D34-324D939D952C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DAB85BA2-86A3-4D3B-8D34-324D939D952C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DAB85BA2-86A3-4D3B-8D34-324D939D952C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{DAB85BA2-86A3-4D3B-8D34-324D939D952C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||
{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{366FD3E8-E0AA-40CF-99ED-BB2966E30C96}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{D8F59D26-50C8-4DFD-B8B9-C529530297F1}.Debug|.NET.ActiveCfg = Debug|.NET
|
||||
{D8F59D26-50C8-4DFD-B8B9-C529530297F1}.Debug|.NET.Build.0 = Debug|.NET
|
||||
{D8F59D26-50C8-4DFD-B8B9-C529530297F1}.Debug|Any CPU.ActiveCfg = Debug|.NET
|
||||
{D8F59D26-50C8-4DFD-B8B9-C529530297F1}.Debug|Mixed Platforms.ActiveCfg = Debug|.NET
|
||||
{D8F59D26-50C8-4DFD-B8B9-C529530297F1}.Debug|Mixed Platforms.Build.0 = Debug|.NET
|
||||
{D8F59D26-50C8-4DFD-B8B9-C529530297F1}.Release|.NET.ActiveCfg = Debug|.NET
|
||||
{D8F59D26-50C8-4DFD-B8B9-C529530297F1}.Release|.NET.Build.0 = Debug|.NET
|
||||
{D8F59D26-50C8-4DFD-B8B9-C529530297F1}.Release|Any CPU.ActiveCfg = Debug|.NET
|
||||
{D8F59D26-50C8-4DFD-B8B9-C529530297F1}.Release|Mixed Platforms.ActiveCfg = Debug|.NET
|
||||
{D8F59D26-50C8-4DFD-B8B9-C529530297F1}.Release|Mixed Platforms.Build.0 = Debug|.NET
|
||||
{5A15CF97-BBA1-4C15-990D-AF08907C8A0C}.Debug|.NET.ActiveCfg = Debug|.NET
|
||||
{5A15CF97-BBA1-4C15-990D-AF08907C8A0C}.Debug|.NET.Build.0 = Debug|.NET
|
||||
{5A15CF97-BBA1-4C15-990D-AF08907C8A0C}.Debug|Any CPU.ActiveCfg = Debug|.NET
|
||||
{5A15CF97-BBA1-4C15-990D-AF08907C8A0C}.Debug|Mixed Platforms.ActiveCfg = Debug|.NET
|
||||
{5A15CF97-BBA1-4C15-990D-AF08907C8A0C}.Debug|Mixed Platforms.Build.0 = Debug|.NET
|
||||
{5A15CF97-BBA1-4C15-990D-AF08907C8A0C}.Release|.NET.ActiveCfg = Debug|.NET
|
||||
{5A15CF97-BBA1-4C15-990D-AF08907C8A0C}.Release|.NET.Build.0 = Debug|.NET
|
||||
{5A15CF97-BBA1-4C15-990D-AF08907C8A0C}.Release|Any CPU.ActiveCfg = Debug|.NET
|
||||
{5A15CF97-BBA1-4C15-990D-AF08907C8A0C}.Release|Mixed Platforms.ActiveCfg = Debug|.NET
|
||||
{5A15CF97-BBA1-4C15-990D-AF08907C8A0C}.Release|Mixed Platforms.Build.0 = Debug|.NET
|
||||
{86BA904A-AC1A-4CC1-AA54-98F3A090AD83}.Debug|.NET.ActiveCfg = Debug|.NET
|
||||
{86BA904A-AC1A-4CC1-AA54-98F3A090AD83}.Debug|.NET.Build.0 = Debug|.NET
|
||||
{86BA904A-AC1A-4CC1-AA54-98F3A090AD83}.Debug|Any CPU.ActiveCfg = Debug|.NET
|
||||
{86BA904A-AC1A-4CC1-AA54-98F3A090AD83}.Debug|Mixed Platforms.ActiveCfg = Debug|.NET
|
||||
{86BA904A-AC1A-4CC1-AA54-98F3A090AD83}.Debug|Mixed Platforms.Build.0 = Debug|.NET
|
||||
{86BA904A-AC1A-4CC1-AA54-98F3A090AD83}.Release|.NET.ActiveCfg = Debug|.NET
|
||||
{86BA904A-AC1A-4CC1-AA54-98F3A090AD83}.Release|.NET.Build.0 = Debug|.NET
|
||||
{86BA904A-AC1A-4CC1-AA54-98F3A090AD83}.Release|Any CPU.ActiveCfg = Debug|.NET
|
||||
{86BA904A-AC1A-4CC1-AA54-98F3A090AD83}.Release|Mixed Platforms.ActiveCfg = Debug|.NET
|
||||
{86BA904A-AC1A-4CC1-AA54-98F3A090AD83}.Release|Mixed Platforms.Build.0 = Debug|.NET
|
||||
{457C09F3-B15D-474F-A761-DC3419E745EF}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{457C09F3-B15D-474F-A761-DC3419E745EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{457C09F3-B15D-474F-A761-DC3419E745EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{457C09F3-B15D-474F-A761-DC3419E745EF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{457C09F3-B15D-474F-A761-DC3419E745EF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{457C09F3-B15D-474F-A761-DC3419E745EF}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||
{457C09F3-B15D-474F-A761-DC3419E745EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{457C09F3-B15D-474F-A761-DC3419E745EF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{457C09F3-B15D-474F-A761-DC3419E745EF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{457C09F3-B15D-474F-A761-DC3419E745EF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{B390C88E-66FD-4E84-8149-29852AFA8723}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{B390C88E-66FD-4E84-8149-29852AFA8723}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B390C88E-66FD-4E84-8149-29852AFA8723}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B390C88E-66FD-4E84-8149-29852AFA8723}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{B390C88E-66FD-4E84-8149-29852AFA8723}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{B390C88E-66FD-4E84-8149-29852AFA8723}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||
{B390C88E-66FD-4E84-8149-29852AFA8723}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B390C88E-66FD-4E84-8149-29852AFA8723}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B390C88E-66FD-4E84-8149-29852AFA8723}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{B390C88E-66FD-4E84-8149-29852AFA8723}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{68865A7C-0792-4757-89D1-874F5A2FF551}.Debug|.NET.ActiveCfg = Debug|.NET
|
||||
{68865A7C-0792-4757-89D1-874F5A2FF551}.Debug|.NET.Build.0 = Debug|.NET
|
||||
{68865A7C-0792-4757-89D1-874F5A2FF551}.Debug|Any CPU.ActiveCfg = Debug|.NET
|
||||
{68865A7C-0792-4757-89D1-874F5A2FF551}.Debug|Mixed Platforms.ActiveCfg = Debug|.NET
|
||||
{68865A7C-0792-4757-89D1-874F5A2FF551}.Debug|Mixed Platforms.Build.0 = Debug|.NET
|
||||
{68865A7C-0792-4757-89D1-874F5A2FF551}.Release|.NET.ActiveCfg = Debug|.NET
|
||||
{68865A7C-0792-4757-89D1-874F5A2FF551}.Release|.NET.Build.0 = Debug|.NET
|
||||
{68865A7C-0792-4757-89D1-874F5A2FF551}.Release|Any CPU.ActiveCfg = Debug|.NET
|
||||
{68865A7C-0792-4757-89D1-874F5A2FF551}.Release|Mixed Platforms.ActiveCfg = Debug|.NET
|
||||
{68865A7C-0792-4757-89D1-874F5A2FF551}.Release|Mixed Platforms.Build.0 = Debug|.NET
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@@ -0,0 +1,99 @@
|
||||
LICENSE AND WARRANTY
|
||||
|
||||
The CSLA .NET framework is Copyright 2006 by Rockford Lhotka.
|
||||
|
||||
You can use this Software for any noncommercial purpose, including
|
||||
distributing derivative works. You can use this Software for any commercial
|
||||
purpose other than you may not use it, in whole or in part, to create a
|
||||
commercial framework product.
|
||||
|
||||
In short, you can use CSLA .NET and modify it to create other commercial or
|
||||
business software, you just can't take the framework itself, modify it and
|
||||
sell it as a product.
|
||||
|
||||
In return, the owner simply requires that you agree:
|
||||
|
||||
This Software License Agreement ("Agreement") is effective
|
||||
upon your use of CSLA .NET ("Software").
|
||||
|
||||
1. Ownership.
|
||||
The CSLA .NET framework is Copyright 2006 by Rockford Lhotka,
|
||||
Eden Prairie, MN, USA.
|
||||
|
||||
2. Copyright Notice.
|
||||
You must not remove any copyright notices from the Software source code.
|
||||
|
||||
3. License.
|
||||
The owner hereby grants a perpetual, non-exclusive, limited license to use
|
||||
the Software as set forth in this Agreement.
|
||||
|
||||
4. Source Code Distribution.
|
||||
If you distribute the Software in source code form you must do so only under
|
||||
this License (i.e. you must include a complete copy of this License with
|
||||
your distribution).
|
||||
|
||||
5. Binary or Object Distribution.
|
||||
You may distribute the Software in binary or object form with no requirement
|
||||
to display copyright notices to the end user. The binary or object form must
|
||||
retain the copyright notices included in the Software source code.
|
||||
|
||||
6. Restrictions.
|
||||
You may not sell the Software. If you create a software development framework
|
||||
based on the Software as a derivative work, you may not sell that derivative
|
||||
work. This does not restrict the use of the Software for creation of other
|
||||
types of non-commercial or commercial applications or derivative works.
|
||||
|
||||
7. Disclaimer of Warranty.
|
||||
The Software comes "as is", with no warranties. None whatsoever. This means
|
||||
no express, implied, statutory or other warranty, including without
|
||||
limitation, warranties of merchantability or fitness for a particular
|
||||
purpose, noninfringement, or the presence or absence of errors, whether or
|
||||
not discoverable. Also, you must pass this disclaimer on whenever you
|
||||
distribute the Software.
|
||||
|
||||
8. Liability.
|
||||
Neither Rockford Lhotka nor any contributor to the Software will be liable
|
||||
for any of those types of damages known as indirect, special, consequential,
|
||||
incidental, punitive or exemplary related to the Software or this License, to
|
||||
the maximum extent the law permits, no matter what legal theory it<69>s based
|
||||
on. Also, you must pass this limitation of liability on whenever you
|
||||
distribute the Software.
|
||||
|
||||
9. Patents.
|
||||
If you sue anyone over patents that you think may apply to the Software
|
||||
for a person's use of the Software, your license to the Software ends
|
||||
automatically.
|
||||
|
||||
The patent rights, if any, licensed hereunder only apply to the Software,
|
||||
not to any derivative works you make.
|
||||
|
||||
10. Termination.
|
||||
Your rights under this License end automatically if you breach it in any way.
|
||||
|
||||
Rockford Lhotka reserves the right to release the Software under different
|
||||
license terms or to stop distributing the Software at any time. Such an
|
||||
election will not serve to withdraw this Agreement, and this Agreement will
|
||||
continue in full force and effect unless terminated as stated above.
|
||||
|
||||
11. Governing Law.
|
||||
This Agreement shall be construed and enforced in accordance with the laws
|
||||
of the state of Minnesota, USA.
|
||||
|
||||
12. No Assignment.
|
||||
Neither this Agreement nor any interest in this Agreement may be assigned
|
||||
by Licensee without the prior express written approval of Developer.
|
||||
|
||||
13. Final Agreement.
|
||||
This Agreement terminates and supersedes all prior understandings or
|
||||
agreements on the subject matter hereof. This Agreement may be modified
|
||||
only by a further writing that is duly executed by both parties.
|
||||
|
||||
14. Severability.
|
||||
If any term of this Agreement is held by a court of competent jurisdiction
|
||||
to be invalid or unenforceable, then this Agreement, including all of the
|
||||
remaining terms, will remain in full force and effect as if such invalid
|
||||
or unenforceable term had never been included.
|
||||
|
||||
15. Headings.
|
||||
Headings used in this Agreement are provided for convenience only and shall
|
||||
not be used to construe meaning or intent.
|
@@ -0,0 +1,2 @@
|
||||
For information on installation, book errata, updates to the framework and so forth,
|
||||
please visit http://www.lhotka.net/cslanet.
|
@@ -0,0 +1,161 @@
|
||||
using System;
|
||||
using ProjectTracker.Library.Security;
|
||||
using System.Web;
|
||||
using System.Web.Security;
|
||||
|
||||
public class PTMembershipProvider : MembershipProvider
|
||||
{
|
||||
public override bool ValidateUser(
|
||||
string username, string password)
|
||||
{
|
||||
bool result = PTPrincipal.Login(username, password);
|
||||
HttpContext.Current.Session["CslaPrincipal"] =
|
||||
Csla.ApplicationContext.User;
|
||||
return result;
|
||||
}
|
||||
|
||||
#region Non-Implemented Members
|
||||
|
||||
// the following members must be implemented due to the abstract class MembershipProvider,
|
||||
// but not required to be functional for using the Login control.
|
||||
public override bool ChangePassword(string username, string oldPassword, string newPassword)
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public override bool ChangePasswordQuestionAndAnswer(string username, string password, string newPasswordQuestion, string newPasswordAnswer)
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public override bool DeleteUser(string username, bool deleteAllRelatedData)
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public override bool EnablePasswordReset
|
||||
{
|
||||
get { throw new NotSupportedException("The method or operation is not implemented."); }
|
||||
}
|
||||
|
||||
public override bool EnablePasswordRetrieval
|
||||
{
|
||||
get { throw new NotSupportedException("The method or operation is not implemented."); }
|
||||
}
|
||||
|
||||
public override MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords)
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public override MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public override MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords)
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public override int GetNumberOfUsersOnline()
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public override string GetPassword(string username, string answer)
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public override MembershipUser GetUser(string username, bool userIsOnline)
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public override string GetUserNameByEmail(string email)
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public override int MaxInvalidPasswordAttempts
|
||||
{
|
||||
get { throw new NotSupportedException("The method or operation is not implemented."); }
|
||||
}
|
||||
|
||||
public override int MinRequiredNonAlphanumericCharacters
|
||||
{
|
||||
get { throw new NotSupportedException("The method or operation is not implemented."); }
|
||||
}
|
||||
|
||||
public override int MinRequiredPasswordLength
|
||||
{
|
||||
get { throw new NotSupportedException("The method or operation is not implemented."); }
|
||||
}
|
||||
|
||||
public override int PasswordAttemptWindow
|
||||
{
|
||||
get { throw new NotSupportedException("The method or operation is not implemented."); }
|
||||
}
|
||||
|
||||
public override MembershipPasswordFormat PasswordFormat
|
||||
{
|
||||
get { throw new NotSupportedException("The method or operation is not implemented."); }
|
||||
}
|
||||
|
||||
public override string PasswordStrengthRegularExpression
|
||||
{
|
||||
get { throw new NotSupportedException("The method or operation is not implemented."); }
|
||||
}
|
||||
|
||||
public override bool RequiresQuestionAndAnswer
|
||||
{
|
||||
get { throw new NotSupportedException("The method or operation is not implemented."); }
|
||||
}
|
||||
|
||||
public override bool RequiresUniqueEmail
|
||||
{
|
||||
get { throw new NotSupportedException("The method or operation is not implemented."); }
|
||||
}
|
||||
|
||||
public override string ResetPassword(string username, string answer)
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public override bool UnlockUser(string userName)
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public override void UpdateUser(MembershipUser user)
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public override string ApplicationName
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new NotSupportedException("The method or operation is not implemented.");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,106 @@
|
||||
html,body
|
||||
{
|
||||
background-color: #DEDEDE;
|
||||
height: 90%;
|
||||
}
|
||||
|
||||
a
|
||||
{
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover
|
||||
{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.nav
|
||||
{
|
||||
color: #FFFFFF;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.nav:hover
|
||||
{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#mainTable
|
||||
{
|
||||
border: solid 1px #000000;
|
||||
width: 798px;
|
||||
height: 90%;
|
||||
min-height: 100%;
|
||||
padding: 0px;
|
||||
border-collapse: collapse;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
#header
|
||||
{
|
||||
background-image: url('images/background.jpg');
|
||||
background-repeat: no-repeat;
|
||||
height: 64px;
|
||||
line-height: 60px;
|
||||
text-align: left;
|
||||
color: #FFFFFF;
|
||||
font-family:
|
||||
Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 36px;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
padding-left: 10px
|
||||
}
|
||||
|
||||
#navigation
|
||||
{
|
||||
float: left;
|
||||
width: 150px;
|
||||
background-color: #000000;
|
||||
height: 100%
|
||||
}
|
||||
|
||||
#navigationContent
|
||||
{
|
||||
color: #FFFFFF;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
margin-left: 25px;
|
||||
white-space: nowrap;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
#subnavigation
|
||||
{
|
||||
background-color: #DEDEDE;
|
||||
height: 19px;
|
||||
background-image: url('images/corner.png');
|
||||
position: relative;
|
||||
left: -3px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: left top;
|
||||
line-height: 19px
|
||||
}
|
||||
|
||||
#logout
|
||||
{
|
||||
text-align: right;
|
||||
padding-right: 10px;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
#content
|
||||
{
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
float: left;
|
||||
padding: 10px;
|
||||
padding-top: 10px;
|
||||
width: 625px;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user