Предприятие "Epam Systems"
Исследование услуг, оказываемых компанией "Epam Systems". Анализ и обзор основных возможностей системы тестирования пользователей на предмет знаний и умений работы с продуктами Microsoft. Реализация Find&Replace dialog для симуляции MS Office Word.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 17.12.2014 |
Размер файла | 2,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
1. Предприятие «Epam Systems»
Эпам системз -- крупнейший поставщик услуг в области разработки программного обеспечения и решений на территории России, стран СНГ, Центральной и Восточной Европы
Компания “Эпам системз”(EPAM) была основана в 1993 году. За время работы реализовано огромное количество проектов в странах СНГ и по всему миру. Понимание специфики отечественного бизнеса и окружающей среды, в том числе законодательной, а также размер и стабильность компании сделали EPAM лидером в консалтинге и разработке программного обеспечения в Центральной и Восточной Европе.
Услуги, оказываемые компанией:
ИТ-консалтинг
Разработка программного обеспечения
Интеграция приложений
Портирование и миграция приложений
Тестирование программного обеспечения
Сопровождение программного обеспечения
Обучение ИТ-специалистов заказчика
Услуги центров компетенций
К основным чертам, характеризующим компанию можно отнести следующие:
Сотрудничество с разработчиком программного обеспечения №1 в Центральной и Восточной Европе
Широкий спектр решений и сервисов в одной компании, лучшие инженеры для реализации проектов
Возможность выполнения одним партнером масштабных и ответственных проектов, требующих больших команд разработчиков
Лучший западный опыт, адаптированный к отечественной действительности
Богатый опыт ИТ-разработок в различных отраслях экономики, а также опыт работы с горизонтальными решениями как для клиентов из СНГ, так и из-за рубежа
География предприятия насчитывает 29 офисов в 9 странах мира и 21 центр разработок в СНГ. Количество сотрудников насчитывает свыше 4500 специалистов.
В Беларуси находится наибольший процент сотрудников Epam. Белорусские офисы - одни из старейших. В Минске сосредоточены основные кадровые ресурсы: четырёх из восьми самых крупных и важных клиентов/проектов Epam Systems - Thomson Reuters, Oracle, ATG и Renaissance Capital. Минск является также местом, где предоставляется ряд уникальных услуг производства:
Information Architecture, Design, and Usability group
Performance analysis and Optimization group
Build Engineering Team
The Software Testing Organization (Minsk) is the biggest QA/QC department in EE
Software Maintenance and Support Division
Global IT (coordinated from and concentrated in Minsk)
Internal System Engineering
CDP, until very recently was Minsk-only…
тестирование симуляция microsoft
Сотрудничество с ведущими компаниями-разработчиками программного обеспечения, консалтинговыми компаниями и научно-исследовательскими центрами является одним из основных приоритетов.
Партнеры по решениям и технологиям -- ведущие мировые производители программного обеспечения, а также разработчики инновационных технологий, необходимых для создания передового программного обеспечения, среди которых такие фирмы, как SAP, Microsoft, BEA Systems, IBM, Novell, Oracle, Sun Microsystems, ABBYY, Datalex, Hyperion, Interwoven, LeverX, LogicLibrary, Retek, Knova, Farata Systems.
Сочетание экспертных знаний, которыми владеют партнеры фирмы по консалтингу, и передового опыта разработки программного обеспечения для лидеров рейтинга Global 500 позволяет компании предлагать оптимальные решения для различных сегментов рынка. Среди партнёров по консалтингу можно выделить CoreMatrix Systems, Datalex, Echo International, IMG, Madison Consulting Group, Solutionz Group.
Объединенные усилия “Эпам системз” и партнеров компании по фундаментальным и прикладным исследованиям содействуют научному прогрессу и помогают в создании инновационных решений.
Партнеры по исследованиям: Белорусский национальный технический университет, Белорусский государственный университет, Национальная Академия Наук (Беларусь), Мэнхеймский университет (Германия).
2. Анализ и решение задач производственной практики
2.1 Анализ и краткий обзор основных возможностей системы
Первостепенной задачей производственной практики было ознакомление со структурой предприятия, изучение документации, прав и обязанностей сотрудников и руководства. В п.1 эти вопросы были кратко освещены. Дальнейшее задание технического характера. Было предложено ознакомиться с проектом и выполнить одно из заданий, требовавшееся для дальнейшей разработки.
Проект представляет собой систему тестирования пользователей на предмет знаний и умений работать с наиболее востребованными и используемыми продуктами корпорации Microsoft: операционные системы Windows и пакет офисных программ MS Office. Разработка начиналась лет 7 назад в Венгрии. Это была симуляция MS Office 2003 и ОС Windows XP. В настоящее время ведётся разработка симуляций ОС Windows 7 и MS Office 2010.
Основная идея проекта заключается в следующем. Пользователь выбирает задание, загружается симулируемое приложение, определённым образом настроенное на выполнение текущей задачи. Например, если это MS Word, то приложение загружается уже с каким-то начальным текстом, графиками, рисунками. Могут быть настроены границы, вид страницы, форматирование текста, нумерация страницы, цвет шрифта и фона и т. д. Эта функциональность достигается посредствам конфигурации из xml файлов. Затем экзаменуемый читает задание и начинает его выполнять. В процессе выполнения пользователь осуществляет какие-то действия, информация о которых пишется в лог. Параллельно логированию ведётся проверка команд, которые создаются во время действий тестируемого на совпадение (частичное совпадение, попадание в границы массивов и т.д.) с необходимыми командами и их параметрами.
Каждая команда представляет собой класс, реализующий интерфейс ICommand, в которые в качастве generic-параметра передаётся класс приложения - класс, характеризующий конкретное симулируемое приложение: WordApplication, ExcelApplication и т.д. Этот класс должен реализовывать ряд интерфейсои может содержать поля и методы, логические значения которых не связаны с формами приложений. Такой подход призван разделить представление данных от их обработки. Это способствует лучшей разделяемости и слабой связанности исходного кода, а также облегчает большие файлы, содержащие исходный код класса формы.
Команды помечаются одним из специальных атрибутов: [NonReportingСommand], [ReportingOnlyCommand], [ReflectedCommand]. Выбор конкретного из них связан лишь с логикой исполнения команды: должна ли она исполнять какие-то действия или достаточно просто сообщить что в приложении что-то изменилось и на этом закончить выполнение команды.
Любая команда включает в себя Application, Object, Action и параметры. Пример команды, используемой в симуляции MS Word:
namespace Word.Commands
{
[ReportGoal("Text", "Copy", "User copied into clipboard text {0}")]
class Copy : ReflectedWordCommand
{
private string _copiedText;
public Copy(PathWay pathway) : base(pathway)
{
}
[CaseSensitiveParameter(1, "Copied text")]
public string CopiedText
{
get { return _copiedText; }
}
protected override void OnInitialized()
{
_copiedText = WordControl.GetSelectedText();
}
protected override void Execute()
{
var hilightedText = new HilightedText();
hilightedText.SetSelectedObject(PathWay.All, WordControl);
DesktopEngine.Clipboard.Copy(hilightedText, MainForm.Caption);
WordControl.Copy();
}
}
}
Приведённая выше команда используется для копирования текста. В методе Execute реализована вся функциональность копирования. А параметр CopiedText, помеченный атрибутом CaseSensitiveParameter будет использоваться для сверки скопированного текста с тем текстом, который нужно было скопировать по заданию. CaseSensitiveParameter определяет способ сравнения параметров команды с заданными. Возможны следующие виды сравнения:
BasePlaneListParameterAttribute
BoolParameterAttribute
CaseInsensitiveParameterAttribute
CaseSensitiveParameterAttribute
DateParameterAttribute
EnumParameterAttribute
FloatParameterAttribute
GeneralStringParameterAttribute
GoalParameterAttribute
IntListParameterAttribute
IntParameterAttribute
ListParameterAttribute
NullableIntParameterAttribute
PlaneListParameterAttribute
SimpleParameterAttribute
SortedIntListParameterAttribute
SortedPlaneListParameterAttribute
SortedStructuredListParameterAttribute
StructuredListParameterAttribute
UserInputParameterAttribute
Каждый из этих классов определяет специфику сравнения параметров команд с заданными параметрами для прохождения теста.
Существуют действия, которые пользователю выполнять не разрешается. Например, выбирать определённый вид документа, или выбирать двухстороннюю печать документа. Для этих целей в системе используется механизм IncorrectAction.
Важной особенностью является возможность сохранять и загружать приложения с начальной конфигурацией. Это делается при помощи специальных конфигурационных классов, которые используются ядром системы для сериализации и десериализации в xml конфигурационные фалы. Пример такого класса приводится ниже.
namespace Vista.Applications.Office2007.Word.Configuration.Options
{
[ConfigurationOption("HeaderFooterPosition", "Word header and footer position", OptionSaveType.IfConfigured, OptionChangedSaveType.Default)]
public class HeaderFooterPositionOption : WordNodeOption<HeaderFooterPositionXml>
{
public override void Apply()
{
int headerFooterPosition;
if (int.TryParse(Settings.Value, out headerFooterPosition))
{
App.MainForm.HeaderFooterPosition = headerFooterPosition;
}
}
protected override void SaveState()
{
if (App.MainForm.HeaderFooterPosition != 0)
{
Settings.Value = App.MainForm.HeaderFooterPosition.ToString();
}
}
public override bool IsSaved
{
get { return !string.IsNullOrEmpty(Settings.Value); }
}
}
}
Кроме этих базовых возможностей система включает в себя большой набор базовых компонент, посредствам которых был реализован пользовательский интерфейс. Основой большинства компонент являются сторонние DevExpress контролы, которые уже содержат в себе весомую часть необходимой функциональности, связанной в большей степени с отрисовкой. Это позволило серьёзно упростить разработку приложения и значительно сократить сроки сдачи проекта.
2.2 Техническое задание
В качестве задания на учебную практику было предложено реализовать Find&Replace dialog для симуляции MS Office Word 2010. Ниже приводится спецификация.
1. Preconditions
1.1. Word 2010 application is open.
2. Features
2.1. Replace Text
Works the same as described in Word 2007 Misc - find and replace, p. 2.
2.2. Find Text
2.2.1. Finding the required text scores the goal. Supported pathways:
2.2.1.1. via Navigation pane
2.2.1.2. via Find and Replace dialog
3. UI Specification
3.1. Navigation Pane
3.1.1. Triggers:
3.1.1.1. Ctrl+F
3.1.1.2. Ribbon -> Home tab -> Editing group -> Find button
3.1.1.3. Ribbon -> Home tab -> Editing group -> Find button's menu -> Find option.
3.1.1.4. Ribbon -> View tab -> Show group -> Navigation Pane check box.
Note:
1) Search box animation on Navigation pane start is not supported - to reduce effort.
2) When a Navigation pane is invoked using one of the triggers in p. 3.1.1.1. - 3.1.1.3, the check-box in the Ribbon -> View tab -> Show group becomes checked.
3.1.2 Major Components
1) Caption: Navigation
2) Task pane options arrow: neutral. Tooltip: "Task Pane Options" The navigation pane is always docked, and can't be moved or re-sized - confirmed.
3) button: closes the navigation pane. Check box in Ribbon -> View tab -> Show group becomes unchecked. Tooltip: "Close"
1) Default text: Search Document
2) The search is performed dynamically: the typed in characters are highlighted in the 1st search result as they appear in the search box.
Note:
Highlighting of all the available search results is not supported, the highlight color remains as in Word 2007 simulation - to reduce effort, confirmed.
3) Selecting the word in the document and activating search (see triggers in p. 3.1.1.1, 3.1.1.3, 3.1.1.4) puts the selected text in the search text box. The search box focus animation is not supported - confirmed.
4) Search history is not supported - confirmed.
1) Search
Tooltip: "Find Options and additional search commands"
If there is no text in the search text box, Search button invokes a submenu:
a) "Advanced Find..." invokes Find and replace dialog, Find tab is active.
b) "Replace..." invokes Find and replace dialog, Replace tab is active.
c) "Go to..." invokes Find and replace dialog, Find tab is active (unlike the real application - confirmed).
d) All the other links are neutral.
2) Cancel
a) If there is any text in the search text box, the search button is changed to Cancel button (see screenshot below).
b) Tooltip: "Click to end your search and scroll back to your original place in the document."
c) On pressing the Cancel button:
The search box is cleared
The button itself is changed to Search (see p. "3.1.2.2.3. Search button" above)
The highlight disappears
The currently selected search result stays selected (grey highlight)
Tooltip: "Find Options and additional search commands" Works the same as described for Search button above.
3.1.2.3. Tabs (C)
3.1.2.3.1. Headings list (C1) Neutral. Tooltip: "Browse the headings in your document"
3.1.2.3.2. Pages list (C2) Neutral. Tooltip: "Browse the pages in your document"
3.1.2.3.3. Search results list (C3) Default tab. Tooltip: "Browse the results from your current search"
3.1.2.4. Search Results Pane (D)
3.1.2.4.1. If the search field (p. "3.1.2.2.1. Search Box (B1)") is empty, the following text is displayed:
"You can search for text in your document by typing in the search box above.
Click the Magnifying Glass button to find commands to search for objects, such as Graphics, Tables, Equations, or Comments."
3.1.2.4.2. If the search field contains an existing text in the document:
A label with the amount of matches is displayed below the search box. If no search result is selected, the label shows "<Total#> matches", where <Total#> means the number of matches (i.e. "3 matches"). If a search result is selected, the label shows "<Sequence#> of <Total#> matches", where <Sequence#> means the sequential number of the selected search result, and <Total#> - the entire number of the search results (i.e. "2 of 3 matches").
Each search result is displayed in a separate frame, which contains a bold search phrase itself and a row where it is located (confirmed).
On mouse hover each search result shows a tooltip with "[Page <#>]", where <#> stands for the number of page, where the result is located.
Showing page numbers only is supported, no section headers - confirmed.
The vertical scroll bar is disabled unless the list of search results is longer than the pane.
Pressing the search result highlights this result with yellow and navigates there (the same as in real application)
3.1.2.4.3. If the search field contains a search phrase, which has no matches in the document:
1) The following text is displayed: "You can search for text in your document by typing in the search box above. Click the X button to cancel your search."
2) The label with the amount of search results shows "No matches".
3.1.2.5. Search Results Navigation Buttons (E)
The buttons are disabled unless the search results are displayed.
Tooltips for previous/next navigation buttons are: "Previous Search Result" and "Next Search Result" appropriately.
3.2. Find and Replace dialog
3.2.1. Triggers
3.2.1.1. Ribbon -> Home tab -> Editing group -> Find button's menu -> Advanced Find (the dialog opens with the Find tab active)
3.2.1.2. Ribbon -> Home tab -> Editing group -> Replace (the dialog opens with the Replace tab active)
3.2.2. Major Components
The dialog works the same as described in Word 2007 Misc - find and replace, p. 1.
3.2.3. Common Behavior
3.2.3.1. If the dialog is invoked while the search box of the navigation pane contains any text, the text shall be present in the dialog's search box either both on Find and on Replace tabs.
3.2.3.2. "Find Next" button performs the navigation within the search results, the Navigation Pane's search results remain as is (the same as in real application).
3.2.3.3. "Cancel" button closes the dialog. The Navigation Pane's behaviour is the following:
1) the search phrase remains in the Navigation Pane's search box, but the search results are cleared.
2) the following text is displayed: "You can search for text in your document by typing in the search box above. Click the X button to cancel your search."
3) The label shows "Click the arrows to continue your search".
4) Pressing any navigation arrow activates the search.
Comments
1. The Navigation pane shall always be switched off by default.
2.3 Реализация технического задания
Реализовывать требуемый функционал можно было используя 2 подхода: добавить код создания и логики работы панели на главную форму Word, либо написать отдельный контрол, и затем добавить его на форму. Второй подход является наиболее предпочтительным, т.к. во-первых, написанный единажды компонент можно переиспользовать, если это потребуется в дальнейшем, и во-вторых, с отдельным компонентом проще работать. Также вынесение кода контрола в отдельный компонент способствует более “чистому” коду класса формы, где содержится только логика взаимодействия компонентов без их реализации. В процессе разработки использовались базовые компоненты DevExpress. На их основе были написаны 2 модуля: NavigationPanel и SearchResultControl. Исходный код этих компонент приводится соответственно в приложениях 1 и 2.
Рис. 2 Симуляция MS Word 2010
Написанный компонент позволил добавить новую функциональность в симуляцию MS Office 2010 связанную с поиском слов и фраз. Выше приводится пример работы симулируемого приложения.
Заключение
Разработанный модуль полностью соответствует предъявленным требованиям. Тестирование модуля выявила ошибки, которые были успешно устранены. При разработке были применены современные технологии и язык программирования.
В ходе прохождения учебной практики был закреплён материал, предлагавшийся к изучению в университете, и успешно применён на практике при реализации выше упомянутого модуля.
Приложение 1
Исходный код пользовательского компонента SearchResultControl
namespace Vista.Applications.Office2007.Word.Controls
{
public partial class SearchResultControl : DevExpress.XtraEditors.XtraUserControl
{
private readonly int _page;
private int _textPosition;
private bool _actAsSearchResult;
public SearchResultControl()
{
InitializeComponent();
searchResultText.BorderStyle = BorderStyle.None;
}
public SearchResultControl(string text, int position, int page) : this()
{
ProcessText(text);
_textPosition = position;
_page = page;
_actAsSearchResult = true;
searchResultText.BorderStyle = BorderStyle.FixedSingle;
}
public string ResultText
{
get { return searchResultText.Text; }
set { ProcessText(value); }
}
public int TextPosition
{
get { return _textPosition; }
set { _textPosition = value; }
}
private void ProcessText(string text)
{
using (Graphics g = CreateGraphics())
{
SizeF size = g.MeasureString(text, searchResultText.Font, 120);
int h = (int)Math.Ceiling(size.Height);
Height = h > 45 ? h : 45;
searchResultText.Text = text;
}
}
private void SearchResultControl_MouseHover(object sender, EventArgs e)
{
if (_actAsSearchResult)
{
SelectSearchResult(true);
searchResultToolTipController.ShowHint(string.Format("[Page {0}]", page));
}
}
private void SearchResultControl_MouseLeave(object sender, EventArgs e)
{
if (_actAsSearchResult)
{
SelectSearchResult(false);
searchResultToolTipController.HideHint();
}
}
public void SelectSearchResult(bool select)
{
if (_actAsSearchResult)
{
Appearance.BackColor = select ? Color.Gold : Color.White;
}
}
private void searchResultText_Enter(object sender, EventArgs e)
{
ActiveControl = contentPanelControl;
}
private void searchResultText_Click(object sender, EventArgs e)
{
OnClick(e);
}
private void searchResultText_KeyDown(object sender, KeyEventArgs e)
{
OnKeyDown(e);
}
private void contentPanelControl_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
OnKeyDown(new KeyEventArgs(e.KeyCode));
}
}
}
Приложение 2
Исходный код пользовательского компонента NavigationPanel
namespace Vista.Applications.Office2007.Word.Controls
{
public partial class NavigationPanel : DevExpress.XtraEditors.XtraUserControl
{
#region private fields
private const int CancelImageIndex = 17;
private const int SearchImageIndex = 2;
private readonly ControlDictionary _localization;
private readonly List<SearchResultControl> _searchResults;
private WordApplication _app;
private FindAndReplaceDialog _searchDialog;
private WordControl _wordControl;
private string _textToFind;
private string _noMatchesText;
private string _noResultsText;
private string _cancelledSearchText;
private string _matchesText;
private string _searchButtonToolTipText;
private string _cancelButtonToolTipText;
private int _currentResultIndex;
#endregion
#region public properties
public WordApplication App
{
get
{
return _app;
}
set
{
if (value != null)
{
_app = value;
_wordControl = _app.MainForm.WordControl;
}
}
}
#endregion
#region Constructor & Localization
public NavigationPanel()
{
InitializeComponent();
_localization = LocalizationDictionary.Dictionary.GetControlDictionary("Word.dll", GetType().FullName);
Localize();
_searchResults = new List<SearchResultControl>();
searchTextEdit.Focus();
ShowNoResultsText(true);
}
private void Localize()
{
navigationLabel.Text = _localization.GetString("navigationLabel.Text");
minimizeButton.ToolTip = _localization.GetString("minimizeButton.ToolTip");
closeButton.ToolTip = _localization.GetString("closeButton.ToolTip");
searchTextEdit.Properties.NullText = _localization.GetString("searchTextEdit.Properties.NullText");
searchTextEdit.Properties.NullValuePrompt = _localization.GetString("searchTextEdit.Properties.NullText");
additionalSearchButton.ToolTip = _localization.GetString("additionalSearchButton.ToolTip");
_noMatchesText = _localization.GetString("_noMatchesText");
_matchesText = _localization.GetString("_matchesText");
_cancelButtonToolTipText = _localization.GetString("_cancelButtonToolTipText");
searchButton.ToolTip = _searchButtonToolTipText = _localization.GetString("_searchButtonToolTipText");
prevSearchResultButton.ToolTip = _localization.GetString("prevSearchResultButton.ToolTip");
nextSearchResultButton.ToolTip = _localization.GetString("nextSearchResultButton.ToolTip");
pagesTab.Tooltip = _localization.GetString("pagesTab.ToolTip");
headingTab.Tooltip = _localization.GetString("headingTab.ToolTip");
searchResultsTab.Tooltip = _localization.GetString("searchResultsTab.ToolTip");
_cancelledSearchText = _localization.GetString("_cancelledSearchText");
_noResultsText = _localization.GetString("_noResultsText");
}
#endregion
#region Event handlers
private void searchButton_Click(object sender, EventArgs e)
{
StartSearch();
}
private void additionalSearchButton_Click(object sender, EventArgs e)
{
searchPopupMenu.ShowPopup(MousePosition);
}
private void closeButton_Click(object sender, EventArgs e)
{
CloseNavigationPane();
}
private void CloseNavigationPane()
{
if (_app != null)
{
_app.MainForm.DisplayNavigationPanel(false, false);
}
}
private void bbAdvancedFind_ItemClick(object sender, ItemClickEventArgs e)
{
ShowFindReplaceDialog(FindAndReplaceDialog.Tabs.Find);
}
private void bbReplace_ItemClick(object sender, ItemClickEventArgs e)
{
ShowFindReplaceDialog(FindAndReplaceDialog.Tabs.Replace);
}
private void bbGoTo_ItemClick(object sender, ItemClickEventArgs e)
{
ShowFindReplaceDialog(FindAndReplaceDialog.Tabs.GoTo);
}
private void searchTextEdit_EditValueChanged(object sender, EventArgs e)
{
_searchResults.Clear();
ClearSearchResults();
if (string.Empty != searchTextEdit.Text)
{
searchButton.ImageIndex = CancelImageIndex;
searchButton.ToolTip = _searchButtonToolTipText;
_textToFind = searchTextEdit.Text;
Search(-1);
}
}
void searchResult_Click(object sender, EventArgs e)
{
if (_wordControl != null)
{
if (sender is SearchResultControl)
{
_wordControl.FindNextEntry(_textToFind, (sender as SearchResultControl).TextPosition);
_currentResultIndex = _searchResults.IndexOf(sender as SearchResultControl);
}
}
}
private void navigationTabControl_SelectedPageChanged(object sender, DevExpress.XtraTab.TabPageChangedEventArgs e)
{
if (navigationTabControl.SelectedTabPage != null)
{
if (navigationTabControl.SelectedTabPage != searchResultsTab)
{
navigationTabControl.SelectedTabPage = searchResultsTab;
}
}
}
private void prevSearchResultButton_Click(object sender, EventArgs e)
{
if (_searchResults.Count != 0)
{
DeselectSearchResults();
if (--_currentResultIndex < 0)
{
_currentResultIndex = _searchResults.Count - 1;
}
_wordControl.FindNextEntry(_textToFind, _searchResults[_currentResultIndex].TextPosition);
_searchResults[_currentResultIndex].SelectSearchResult(true);
}
}
private void nextSearchResultButton_Click(object sender, EventArgs e)
{
if (_searchResults.Count != 0)
{
DeselectSearchResults();
if (++_currentResultIndex > _searchResults.Count - 1)
{
_currentResultIndex = 0;
}
_wordControl.FindNextEntry(_textToFind, _searchResults[_currentResultIndex].TextPosition);
_searchResults[_currentResultIndex].SelectSearchResult(true);
}
}
private void NavigationPanel_Enter(object sender, EventArgs e)
{
ActiveControl = searchTextEdit;
}
private void NavigationPanel_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Return:
if (sender is TextEdit)
{
ActiveControl = nextSearchResultButton;
}
break;
case Keys.Escape:
CloseNavigationPane();
break;
}
}
#endregion
#region Public methods
public void ClearContent()
{
ClearSearchResults();
searchTextEdit.Text = string.Empty;
}
#endregion
#region Methods
private void ClearSearchResults()
{
resultTableLayout.Controls.Clear();
resultTableLayout.RowStyles.Clear();
resultTableLayout.RowStyles.Add(new RowStyle(SizeType.Absolute, 0));
resultTableLayout.RowCount = 1;
resultTableLayout.Size = new Size(resultTableLayout.Width, 0);
matchesLabel.Text = string.Empty;
EnableNavigationButtons(false);
}
private void ShowFindReplaceDialog(FindAndReplaceDialog.Tabs activeTab)
{
_searchDialog = new FindAndReplaceDialog(App, activeTab)
{
TextToFind = searchTextEdit.Text
};
DesktopEngine.ShowDialogNonModal(_searchDialog, App.MainForm);
_searchDialog.ActivateForm();
}
private void StartSearch()
{
if (searchButton.ImageIndex == CancelImageIndex)
{
searchButton.ImageIndex = SearchImageIndex;
ClearSearchResults();
_searchResults.Clear();
searchTextEdit.Text = string.Empty;
searchButton.ToolTip = _cancelButtonToolTipText;
ShowNoResultsText(true);
}
else
{
searchButton.ToolTip = _searchButtonToolTipText;
if (string.IsNullOrEmpty(searchTextEdit.Text))
{
searchPopupMenu.ShowPopup(MousePosition);
}
}
}
private void Search(int startPosition)
{
_searchResults.Clear();
do
{
startPosition = _wordControl.FindNextEntryNonHilighting(_textToFind, startPosition);
if (startPosition > -1)
{
AddToSearchResults(startPosition);
startPosition += _textToFind.Length;
}
}
while (startPosition != -1);
ShowSearchResults();
}
private void ShowSearchResults()
{
ClearSearchResults();
foreach (var searchResultControl in _searchResults)
{
resultTableLayout.RowStyles.Add(new RowStyle(SizeType.Absolute, searchResultControl.Height));
resultTableLayout.Size = new Size(180, resultTableLayout.Size.Height + searchResultControl.Height);
resultTableLayout.RowCount += 1;
resultTableLayout.Controls.Add(searchResultControl, 1, resultTableLayout.RowCount - 1);
}
if (_searchResults.Count > 0)
{
resultTableLayout.ColumnStyles[0] = new ColumnStyle(SizeType.Percent, 0F);
resultTableLayout.ColumnStyles[1] = new ColumnStyle(SizeType.Percent, 100F);
matchesLabel.Text = string.Format("{0} {1} ", _searchResults.Count, _matchesText);
EnableNavigationButtons(true);
}
else
{
ShowNoResultsText(false);
EnableNavigationButtons(false);
matchesLabel.Text = _noMatchesText;
}
}
private void AddToSearchResults(int position)
{
SearchResultControl searchResult = new SearchResultControl(_wordControl.GetCursorLine(), position, _wordControl.GetCurPage() + 1);
searchResult.Dock = DockStyle.Fill;
searchResult.Click += new EventHandler(searchResult_Click);
searchResult.KeyDown += new KeyEventHandler(NavigationPanel_KeyDown);
_searchResults.Add(searchResult);
var command = new FindNextEntry(PathWay.Form, _textToFind, position, false);
_app.CommandExecuter.Execute(command);
}
private void DeselectSearchResults()
{
foreach (SearchResultControl searchResultControl in _searchResults)
{
searchResultControl.SelectSearchResult(false);
}
}
private void ShowNoResultsText(bool cancelled)
{
resultTableLayout.ColumnStyles[0] = new ColumnStyle(SizeType.Percent, 5F);
resultTableLayout.ColumnStyles[1] = new ColumnStyle(SizeType.Percent, 95F);
SearchResultControl noResult = new SearchResultControl
{
Dock = DockStyle.Fill
};
noResult.ResultText = cancelled ? _cancelledSearchText : _noResultsText;
resultTableLayout.RowStyles.Add(new RowStyle(SizeType.Absolute, noResult.Height));
resultTableLayout.Size = new Size(180, resultTableLayout.Size.Height + noResult.Height);
resultTableLayout.RowCount += 1;
resultTableLayout.Controls.Add(noResult, 1, resultTableLayout.RowCount - 1);
}
private void EnableNavigationButtons(bool enable)
{
if (enable)
{
prevSearchResultButton.ImageIndex = 18;
nextSearchResultButton.ImageIndex = 19;
nextSearchResultButton.Enabled = prevSearchResultButton.Enabled = true;
}
else
{
prevSearchResultButton.ImageIndex = 7;
nextSearchResultButton.ImageIndex = 8;
nextSearchResultButton.Enabled = prevSearchResultButton.Enabled = false;
}
}
#endregion
}
}
Размещено на Allbest.ru
...Подобные документы
Изменение пользовательского интерфейса приложения Microsoft Office system 2007. Увеличение функциональности приложений для поддержки совместной работы (Office Word 2007, Office Excel 2007, Office PowerPoint 2007, Office Access 2007 и Office Outlook 2007).
контрольная работа [1,5 M], добавлен 13.12.2009Поиск значений показателя "количество абонентов оператора Мегафон" в сети Интернет с помощью различных поисковых систем; их сравнительный анализ. Формирование навыков работы с приложением Microsoft Word; работа с электронными таблицами в Microsoft Excel.
курсовая работа [3,9 M], добавлен 12.05.2011Общая характеристика приложения Microsoft Office system 2007. Особенности форматов Microsoft Office Open XML. Технологии управления миграцией на новую версию. Возможности приложений Office Word, Excel, Access и Office PowerPoint 2007, их интеграция.
реферат [1,0 M], добавлен 13.09.2011Состав пакета Microsoft Office System. Обзор основных возможностей Microsoft Office. Анализ и выработка согласованной финансовой политики на предприятии в MS Excel. Разработка базы данных при помощи Microsoft Access. Создание простейшей Web-страницы.
курсовая работа [1,4 M], добавлен 18.01.2012Основные понятия алгоритма. Характеристика и функциональные возможности табличного процессора Microsoft Exсel. Текстовый редактор Microsoft Word и электронные таблицы Microsoft Excel. Типы алгоритмических процессов. Настройка компонентов Microsoft Office.
контрольная работа [1,3 M], добавлен 17.02.2013Використовування програм для підбору пароля на Microsoft Office Word та WinRAR. Здійснення контролю за забезпеченням захисту інформації. Використання цифр та літер при складанні паролю. Впровадження систем допуску співробітників до роботи з документами.
лабораторная работа [667,8 K], добавлен 21.01.2014Особенности работы с основными приложениями Microsoft Office (Word, Excel, PowerPoint). Решение статических задач контроля качества с применением программных средств. Создание электронных презентаций. Использование в работе ресурсов сети Интернет.
отчет по практике [945,8 K], добавлен 17.02.2014Описание состава пакета Microsoft Office. Сравнение различных версий пакета Microsoft Office. Большие прикладные программы: Word, Excel, PowerPoint, Access. Программы-помощники. Система оперативной помощи.
реферат [22,5 K], добавлен 31.03.2007Устройство и назначение составных элементов компьютера - системного блока, жесткого и гибкого дисков, клавиатуры, монитора, плоттера, сканера. Классификация программного обеспечения. Интерфейс и инструкция по работе с Microsoft Office Word 2007.
дипломная работа [5,1 M], добавлен 17.01.2011Если в документе Word есть вставленный объект, то Word называют приложением-клиентом. В приложения Microsoft Office можно вставлять растровые и векторные рисунки, а встроенный в Word графический редактор позволяет создавать графические объекты.
реферат [190,9 K], добавлен 08.01.2009Панели как основные визуальные средства редактирования документов, их размещение и конфигурация в различных программах Microsoft Office. Панели текстового редактора Microsoft Word и Excel, основные их функциональные возможности и предназначение.
лабораторная работа [885,6 K], добавлен 31.05.2009Способы запуска и выхода из Word. Элементы интерфейса Microsoft Word. Разделы меню офиса. Отображение на экране необходимой панели инструментов. Копирования, перемещение и удаление фрагмента текста. Автоматизация процессов ввода и редактирования текста.
лабораторная работа [24,2 K], добавлен 15.11.2010Новые возможности текстового редактора Microsoft Word. Стили, оглавление, разметка страницы и ее границы, автоматическое оформление титульного листа, графические возможности, вставка, редактирование и оформление таблиц, диаграмм, работа с формулами.
лабораторная работа [2,0 M], добавлен 02.12.2009Программы для делопроизводства, обмена информацией, деловой графики и презентаций. Работа с текстовыми и табличными процессорами, с системами управления базами данных на примере программы Microsoft Office Word. Описание основных функций программ.
курсовая работа [1,0 M], добавлен 12.01.2015Изучение понятия, видов и методов создания стандартных макросов Microsoft Office Word - набора инструкций, которые сообщают программе, какие действия следует выполнить, чтобы достичь определенной цели. Функции макрорекордера. Редактирование макросов.
курсовая работа [1,1 M], добавлен 18.04.2011Вставка в документы рисунков и других объектов. Вставка рисунков из библиотеки Microsoft Clip Gallery. Импортирование графики из других приложений Microsoft Office. Преобразование текста посредством Microsoft WordArt. Диаграммы Microsoft Graph.
реферат [23,6 K], добавлен 31.07.2006Особенности разработки текстовых документов с помощью информационной технологии Microsoft Office Word с включением в текст графических объектов типа "скриншот". Инструкция по построению диаграммы с помощью пункта "Вид" главного меню приложения MS Excel.
лабораторная работа [444,7 K], добавлен 14.01.2010История создания MS Office 365. Регистрация на официальном сайте, проверка данных и подтверждение приобретения пакета услуг. Работа в электронной таблице Office 365. Совместная работа над документами. Расчёт суммы, потраченной в ходе использования Office.
курсовая работа [2,7 M], добавлен 19.06.2014Что такое Microsoft Office (MO) и что входит в стандартный пакет. Блок-схема пакета, разновидность пакетов. Программное обеспечение для работы с различными типами документов. Взаимодействие данных и их обработка. Графическая оболочка операционной системы.
курсовая работа [194,0 K], добавлен 09.01.2014Компьютерные программы, предназначенные для хранения и обработки данных. Способы работы с таблицами в Microsoft Word. Система управления базами данных Microsoft Access. Способность электронных таблиц быстро и точно производить автоматические вычисления.
контрольная работа [16,2 K], добавлен 22.11.2009