or
private
void
adjustPageViewGrip()
{
RadPageViewOutlookElement viewElement = (RadPageViewOutlookElement)radPageView.ViewElement;
int
minHeight = 310;
int
itemHeight = radPageView.SelectedPage.Item.Size.Height;
int
selectedPageHeight = radPageView.SelectedPage.Height;
if
(selectedPageHeight < minHeight)
{
int
hide = (
int
)Math.Ceiling((
double
)(minHeight - selectedPageHeight) / (
double
)itemHeight);
if
(hide > 0)
{
viewElement.HideItems(hide);
}
}
else
if
((selectedPageHeight + itemHeight) >= minHeight)
{
int
show = (
int
)Math.Floor((
double
)(selectedPageHeight - minHeight) / (
double
)itemHeight);
if
(show > 0)
{
viewElement.ShowItems(show);
}
}
}
public
class
EntityStateCollection<T> : IList<T> where T :
new
()
{
#region Membres
private
List<EntityState<T>> _entityStates;
private
Enumerator<T> _innerEnumerator;
public
event
EventHandler ItemAdded;
public
event
EventHandler ItemDeleted;
public
event
EventHandler ItemModified;
#endregion
#region Enumerator
[Serializable, StructLayout(LayoutKind.Sequential)]
public
struct
Enumerator<T> : IEnumerator<T>, IDisposable, IEnumerator where T :
new
()
{
private
List<EntityState<T>> list;
private
int
index;
private
T current;
internal
Enumerator(List<EntityState<T>> list)
{
this
.list = list;
this
.index = 0;
this
.current =
default
(T);
}
public
void
Dispose()
{
}
public
bool
MoveNext()
{
List<EntityState<T>> list =
this
.list;
if
(
this
.index < list.Count)
{
this
.current = list[
this
.index].InnerObject;
this
.index++;
return
true
;
}
else
{
this
.current =
default
(T);
return
false
;
}
}
public
T Current
{
get
{
return
this
.current;
}
}
object
IEnumerator.Current
{
get
{
return
this
.Current;
}
}
void
IEnumerator.Reset()
{
this
.index = 0;
this
.current =
default
(T);
}
}
#endregion Enumerator
public
EntityStateCollection()
{
_entityStates =
new
List<EntityState<T>>();
_innerEnumerator =
new
Enumerator<T>(_entityStates);
}
public
void
SetModified(T item)
{
EntityState<T> entity = _entityStates[
this
.IndexOf(item)];
if
(entity.ObjectState != State.Added)
{
entity.ObjectState = State.Modified;
this
.ItemModified(entity,
null
);
}
}
/// <summary>
/// Returns true if all T entities are at Current state.
/// </summary>
/// <returns></returns>
public
bool
IsInCurrentState()
{
for
(
int
i = 0; i < _entityStates.Count; i++)
{
if
(_entityStates[i].ObjectState != State.Current)
{
return
false
;
}
}
return
true
;
}
public
EntityState<T> GetEntityState(
int
i)
{
return
_entityStates[i];
}
/// <summary>
/// Add a list of T objects to the collection with the Current state
/// </summary>
/// <param name="lst"></param>
public
void
AddRange(List<T> lst)
{
foreach
(T item
in
lst)
{
_entityStates.Add(
new
EntityState<T>(State.Current, item));
//this.ItemAdded(_entityStates[this.IndexOf(item)], null);
}
}
#region IList<T> Membres
public
int
IndexOf(T item)
{
int
itemIndex = -1;
for
(
int
i = 0; i < _entityStates.Count; i++)
{
if
(_entityStates[i].InnerObject.Equals(item))
{
itemIndex = i;
break
;
}
}
return
itemIndex;
}
public
void
Insert(
int
index, T item)
{
_entityStates.Insert(index,
new
EntityState<T>(State.Added, item));
this
.ItemAdded(_entityStates[index],
null
);
}
public
void
RemoveAt(
int
index)
{
_entityStates[index].ObjectState = State.Deleted;
this
.ItemDeleted(_entityStates[index],
null
);
}
public
T
this
[
int
index]
{
get
{
return
_entityStates[index].InnerObject;
}
set
{
_entityStates[index].InnerObject = value;
}
}
#endregion
#region ICollection<T> Membres
public
void
Add(T item)
{
_entityStates.Add(
new
EntityState<T>(State.Added, item));
this
.ItemAdded(_entityStates[
this
.IndexOf(item)],
null
);
}
public
void
Clear()
{
_entityStates.Clear();
}
public
bool
Contains(T item)
{
for
(
int
i = 0; i < _entityStates.Count; i++)
{
if
(_entityStates[i].InnerObject.Equals(item))
{
return
true
;
}
}
return
false
;
}
public
void
CopyTo(T[] array,
int
arrayIndex)
{
throw
new
NotImplementedException();
}
public
int
Count
{
get
{
return
_entityStates.Count; }
}
public
bool
IsReadOnly
{
get
{
return
false
; }
}
public
bool
Remove(T item)
{
for
(
int
i = 0; i < _entityStates.Count; i++)
{
if
(_entityStates[i].InnerObject.Equals(item))
{
_entityStates[i].ObjectState = State.Deleted;
this
.ItemDeleted(_entityStates[i],
null
);
return
true
;
}
}
return
false
;
}
#endregion
#region IEnumerable et IEnumerable<T> Membres
public
IEnumerator<T> GetEnumerator()
{
return
this
._innerEnumerator;
}
IEnumerator IEnumerable.GetEnumerator()
{
return
this
._innerEnumerator;
}
#endregion