MethodWithLineSearchPanel.h

00001 
00010 #ifndef METHODWITHLINESEARCHPANEL_H
00011 #define METHODWITHLINESEARCHPANEL_H
00012 
00013 #include "DoubleParameterValidator.h"
00014 #include "LineSearchControl.h"
00015 #include "LineSearchValidator.h"
00016 #include "MethodPanelInfo.h"
00017 #include "MethodPanelFactory.h"
00018 #include "PointControl.h"
00019 #include "StopConditionControl.h"
00020 #include "StopConditionValidator.h"
00021 
00022 template <class T>
00023 class MethodWithLineSearchPanel
00024     : public wxPanel
00025 {
00026 public:
00027 
00030     MethodWithLineSearchPanel(wxWindow*             parent,
00031                               int                   id,
00032                               T*                    pMethod,
00033                               const ProblemBase&    problem,
00034                               const wxPoint&        pos=wxDefaultPosition,
00035                               const wxSize&         size=wxDefaultSize,
00036                               long                  style=0);
00037 
00042     static wxPanel*     CreatePanel(MethodPanelInfo     panelInfo);
00043 
00044 private:
00045 protected:
00046 
00047     void do_layout();
00048 
00049     wxBoxSizer*             mpMainSizer;
00050 
00051     LineSearchControl*      mpLineSearch;
00052     StopConditionControl*   mpStopCondition;
00053     PointControl*           mpStartingPoint;
00054 };
00055 
00056 template <class T>
00057 MethodWithLineSearchPanel<T>::MethodWithLineSearchPanel
00058                     (wxWindow*             parent,
00059                     int                   id,
00060                     T*                    pMethod,
00061                     const ProblemBase&    problem,
00062                     const wxPoint&        pos,
00063                     const wxSize&         size,
00064                     long                  style)
00065     : wxPanel(parent, id, pos, size, wxTAB_TRAVERSAL)
00066 {
00067     // Tworzenie kontrolek.
00068     mpLineSearch = new LineSearchControl(this, -1, problem);
00069     mpStopCondition = new StopConditionControl(this, -1);
00070     mpStartingPoint = new PointControl(this, -1, wxDefaultPosition,
00071             wxDefaultSize, 0, _("Starting point"));
00072 
00073     do_layout();
00074 
00075     // Wypełnianie listy warunków stopu.
00076     mpStopCondition->SetList(pMethod->AllowedStopConditions());
00077 
00078     // Walidatory.
00079     mpLineSearch->SetValidator(LineSearchValidator(pMethod->mcpLineSearch,
00080                 &problem));
00081     mpStopCondition->SetValidator(StopConditionValidator(
00082                 reinterpret_cast<CountedPtr<const StopConditionBase>&>(
00083                     pMethod->mcpStopCondition)));
00084 
00085     // Wypełnianie kontrolki punktu startowego.
00086     mpStartingPoint->Init(problem.Variables(),
00087                  /*pMethod->mStartingPoint*/pMethod->mInitialStartingPoint);
00088 
00089 }// MethodWithLineSearchPanel
00090 
00091 
00092 template <class T>
00093 /* static */ wxPanel*
00094 MethodWithLineSearchPanel<T>::CreatePanel(MethodPanelInfo panelInfo)
00095 {
00096     return new MethodWithLineSearchPanel(
00097                 panelInfo.pParent(),
00098                 -1,
00099                 dynamic_cast<T*>(panelInfo.pMethod()),
00100                 *panelInfo.pProblem());
00101 
00102 } // CreatePanel
00103 
00104 template <class T>
00105 void
00106 MethodWithLineSearchPanel<T>::do_layout()
00107 {
00108 
00109     mpMainSizer = new wxBoxSizer(wxVERTICAL);
00110     mpMainSizer->Add(mpLineSearch, 0, wxEXPAND, 0);
00111     mpMainSizer->Add(mpStopCondition, 0, wxEXPAND, 0);
00112     mpMainSizer->Add(mpStartingPoint, 1, wxEXPAND, 0);
00113 
00114     SetAutoLayout(true);
00115     SetSizer(mpMainSizer);
00116     mpMainSizer->Fit(this);
00117     mpMainSizer->SetSizeHints(this);
00118 
00119 }
00120 
00121 #endif // METHODWITHLINESEARCHPANEL_H

Wygenerowano Fri Sep 29 21:04:49 2006 dla EduOptim2 programem  doxygen 1.4.6