00001
00002
00003
00004 #include "stdafx.h"
00005 #include "GlobalAspOrder.h"
00006 #include "afxdlgs.h"
00007 #ifdef _DEBUG
00008 #define new DEBUG_NEW
00009 #undef THIS_FILE
00010 static char THIS_FILE[] = __FILE__;
00011 #endif
00012
00014
00015
00016
00017 GlobalAspOrder::GlobalAspOrder(CWnd* pParent )
00018 : CDialog(GlobalAspOrder::IDD, pParent)
00019 {
00020
00021
00022 }
00023
00024
00025 void GlobalAspOrder::DoDataExchange(CDataExchange* pDX)
00026 {
00027 CDialog::DoDataExchange(pDX);
00028
00029 DDX_Control(pDX, IDC_BUTTON2, m_down);
00030 DDX_Control(pDX, IDC_BUTTON1, m_up);
00031 DDX_Control(pDX, IDC_LIST3, m_list);
00032
00033 }
00034
00035
00036 BEGIN_MESSAGE_MAP(GlobalAspOrder, CDialog)
00037
00038 ON_BN_CLICKED(IDC_BUTTON1, OnMoveUp)
00039 ON_BN_CLICKED(IDC_BUTTON2, OnMoveDown)
00040
00041 END_MESSAGE_MAP()
00042
00044
00045
00046 void GlobalAspOrder::OnMoveUp()
00047 {
00048 CString text;
00049 int idx = m_list.GetCurSel();
00050 if (LB_ERR != idx && idx > 0)
00051 {
00052 int data = m_list.GetItemData( idx);
00053 m_list.GetText( idx, text);
00054
00055 m_list.DeleteString( idx);
00056
00057 m_list.InsertString( idx - 1, text);
00058 m_list.SetItemData( idx - 1, data);
00059 m_list.SetCurSel( idx - 1);
00060 }
00061 }
00062
00063 void GlobalAspOrder::OnMoveDown()
00064 {
00065 CString text;
00066 int idx = m_list.GetCurSel();
00067 if (LB_ERR != idx && idx + 1 < m_list.GetCount())
00068 {
00069 int data = m_list.GetItemData( idx);
00070 m_list.GetText( idx, text);
00071
00072 m_list.DeleteString( idx);
00073
00074 m_list.InsertString( idx + 1, text);
00075 m_list.SetItemData( idx + 1, data);
00076 m_list.SetCurSel( idx + 1);
00077 }
00078 }
00079
00080
00081 void GlobalAspOrder::addAspects( const std::vector< AspectRep *>& oo)
00082 {
00083 m_aspects = oo;
00084 }
00085
00086
00087
00088
00089
00090 BOOL GlobalAspOrder::OnInitDialog()
00091 {
00092 CDialog::OnInitDialog();
00093
00094 m_down.SetIcon( ::LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICONDN)));
00095 m_up.SetIcon( ::LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICONUP)));
00096
00097 std::vector< AspectRep *>::const_iterator i;
00098 unsigned int k;
00099
00100 for( k = 0, i = m_aspects.begin(); i != m_aspects.end(); ++i, ++k)
00101 {
00102 CString asp_name = (*i)->getName().c_str();
00103 m_list.AddString( asp_name);
00104 m_list.SetItemData( k, k);
00105 }
00106 return TRUE;
00107
00108 }
00109
00110 void GlobalAspOrder::OnOK()
00111 {
00112
00113
00114 int howmany = m_list.GetCount();
00115
00116 for( int k = 0; k < howmany; ++k)
00117 {
00118 unsigned int data = m_list.GetItemData( k);
00119 if ( data < m_aspects.size())
00120 {
00121 m_resultAspects.push_back( m_aspects[data]);
00122
00123 }
00124 }
00125 ASSERT( howmany == m_aspects.size());
00126
00127
00128 CDialog::OnOK();
00129 }
00130