MezBreadcrumbunit BreadcrumbDemoUnit;
// Mock fields for our breadcrumb flow views
string multiView1a;
string multiView2a;
string multiView3a;
string multiView4a;
string multiView1b;
string multiView2b;
string multiView3b;
string multiView4b;
// For us to keep track of the breadcrumbs
Breadcrumb selectedBreadcrumb;
MezBreadcrumbBreadcrumb[] allBreadCrumbs;
MezBreadcrumbBreadcrumb[] currentBreadCrumbs;
// Current navigation state and available views
DSL_VIEWS currentView;
int currentViewIndex;
DSL_VIEWS[] views;
bool inited;
int maxViewIndex;
// The init constructs our available views, breadcrumbs and initial breadcrumbs to display
void init() {
if(inited == null || inited == false) {
initMockFields();
currentView = DSL_VIEWS.BreadcrumbDemoMultiView1;
currentViewIndex = 0;
maxViewIndex = 0;
// The destination views for our flow
views.clear();
views.append(DSL_VIEWS.BreadcrumbDemoMultiView1);
views.append(DSL_VIEWS.BreadcrumbDemoMultiView2);
views.append(DSL_VIEWS.BreadcrumbDemoMultiView3);
views.append(DSL_VIEWS.BreadcrumbDemoMultiView4);
// Breadcrumbs matching the destination views above
MezBreadcrumbBreadcrumb breadCrumb1 = createBreadCrumb("View 1", null, false, null, null, false);
MezBreadcrumbBreadcrumb breadCrumb2 = createBreadCrumb("View 2", null, false, null, null, false);
MezBreadcrumbBreadcrumb breadCrumb3 = createBreadCrumb("View 3", null, false, null, null, false);
MezBreadcrumbBreadcrumb breadCrumb4 = createBreadCrumb("View 4", null, false, null, null, false);
allBreadCrumbs.clear();
allBreadCrumbs.append(breadCrumb1);
allBreadCrumbs.append(breadCrumb2);
allBreadCrumbs.append(breadCrumb3);
allBreadCrumbs.append(breadCrumb4);
// Breadcrumbs to display on init
currentBreadCrumbs.clear();
currentBreadCrumbs.append(breadCrumb1);
inited = true;
}
}
MezBreadcrumbvoid initMockFields() {
multiView1a = null;
multiView2a = null;
multiView3a = null;
multiView4a = null;
multiView1b = null;
multiView2b = null;
multiView3b = null;
multiView4b = null;
}
Breadcrumb[] getCurrentBreadCrumbs() {
return currentBreadCrumbs;
}
DSL_VIEWS proceedAction() {
// Leave a breadcrumb if we go to the view for the first time
if(currentViewIndex >= currentBreadCrumbs.length() - 1) {
currentBreadCrumbs.append(allBreadCrumbs.get(currentViewIndex + 1));
}
// Find the next view and go to it
setViewIndex(currentViewIndex + 1);
DSL_VIEWS nextView = views.get(currentViewIndex);
currentView = nextView;
return currentView;
}
// Find the previous view and go to it
DSL_VIEWS backAction() {
setViewIndex(currentViewIndex - 1);
DSL_VIEWS prevView = views.get(currentViewIndex);
currentView = prevView;
return currentView;
}
// Go to the view associated with the selected breadcrumb
DSL_VIEWS breadcrumbAction() {
int index = findIndexForSelectedBreadcrumb();
setViewIndex(index);
Mez:log(currentViewIndex);
currentView = views.get(currentViewIndex);
return currentView;
}
// Finish the flow and reset
DSL_VIEWS finishAction() {
inited = false;
return views.get(0);
}
// Utility method: Find the view and breadcrumb index from the selected breadcrumb
int findIndexForSelectedBreadcrumb() {
for(int i = 0; i < allBreadCrumbs.length(); i++) {
MezBreadcrumbBreadcrumb current = allBreadCrumbs.get(i);
if(selectedBreadcrumb.label == current.label) {
return i;
}
}
}
// Utility method: createCreate a breadcrumb
MezBreadcrumbBreadcrumb createBreadCrumb(string label, string tooltip, bool requiresConfirm, string confirmSubj, string confirmBody, bool isBack) {
MezBreadcrumbBreadcrumb breadCrumb = MezBreadcrumbBreadcrumb:new();
breadCrumb.label = label;
breadCrumb.tooltip = tooltip;
breadCrumb.requiresConfirmation = requiresConfirm;
breadCrumb.confirmationMessageSubject = confirmSubj;
breadCrumb.confirmationMessageBody = confirmBody;
breadCrumb.isBack = isBack;
return breadCrumb;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DSL_VIEWS goToView1() {
return navigateToViewForIndex(0);
}
DSL_VIEWS goToView2() {
return navigateToViewForIndex(1);
}
DSL_VIEWS goToView3() {
return navigateToViewForIndex(2);
}
DSL_VIEWS goToView4() {
return navigateToViewForIndex(3);
}
DSL_VIEWS navigateToViewForIndex(int index) {
setViewIndex(index);
currentView = views.get(index);
return currentView;
}
bool showView1() {
return true;
}
bool showView2() {
if(currentViewIndex >= 1) {
return true;
}
return false;
}
return showViewBreadcrumb(1);
}
bool showView3() {
return ifshowViewBreadcrumb(currentViewIndex >= 2) {
return true;
}
bool showView4() }{
return falseshowViewBreadcrumb(3);
}
bool showView4showViewBreadcrumb(int viewIndex) {
if(currentViewIndex >= 3viewIndex) {
return true;
}
return false;
}
void setViewIndex(int index) {
currentViewIndex = index;
if(currentViewIndex > maxViewIndex) {
maxViewIndex = currentViewIndex;
}
}
DSL_APPEARANCE disabledAppearance() {
return DSL_APPEARANCE.Disable;
} |