diff --git a/src/AutoPilotPlugins/AutoPilotPlugin.cc b/src/AutoPilotPlugins/AutoPilotPlugin.cc
index 22e5fad..c8dfa0c 100644
--- a/src/AutoPilotPlugins/AutoPilotPlugin.cc
+++ b/src/AutoPilotPlugins/AutoPilotPlugin.cc
@@ -157,9 +157,9 @@ Fact* AutoPilotPlugin::getFact(FactSystem::Provider_t provider, int componentId,
     return NULL;
 }
 
-QStringList AutoPilotPlugin::parameterNames(void)
+QStringList AutoPilotPlugin::parameterNames(int componentId)
 {
-	return _getParameterLoader()->parameterNames();
+	return _getParameterLoader()->parameterNames(componentId);
 }
 
 const QMap<int, QMap<QString, QStringList> >& AutoPilotPlugin::getGroupMap(void)
diff --git a/src/AutoPilotPlugins/AutoPilotPlugin.h b/src/AutoPilotPlugins/AutoPilotPlugin.h
index 6a8b661..47ac288 100644
--- a/src/AutoPilotPlugins/AutoPilotPlugin.h
+++ b/src/AutoPilotPlugins/AutoPilotPlugin.h
@@ -81,8 +81,7 @@ public:
     Q_INVOKABLE bool parameterExists(int componentId, const QString& name);
 	
 	/// Returns all parameter names
-	/// FIXME: component id missing, generic to fact
-	QStringList parameterNames(void);
+	QStringList parameterNames(int componentId);
 	
 	/// Returns the specified parameter Fact from the default component
 	/// WARNING: Returns a default Fact if parameter does not exists. If that possibility exists, check for existince first with
diff --git a/src/FactSystem/ParameterLoader.cc b/src/FactSystem/ParameterLoader.cc
index 0c152cc..8a7bcbb 100644
--- a/src/FactSystem/ParameterLoader.cc
+++ b/src/FactSystem/ParameterLoader.cc
@@ -387,11 +387,11 @@ Fact* ParameterLoader::getFact(int componentId, const QString& name)
     return _mapParameterName2Variant[componentId][name].value<Fact*>();
 }
 
-QStringList ParameterLoader::parameterNames(void)
+QStringList ParameterLoader::parameterNames(int componentId)
 {
 	QStringList names;
 	
-	foreach(QString paramName, _mapParameterName2Variant[_defaultComponentId].keys()) {
+	foreach(QString paramName, _mapParameterName2Variant[_actualComponentId(componentId)].keys()) {
 		names << paramName;
 	}
 	
diff --git a/src/FactSystem/ParameterLoader.h b/src/FactSystem/ParameterLoader.h
index 9a4cb99..3580406 100644
--- a/src/FactSystem/ParameterLoader.h
+++ b/src/FactSystem/ParameterLoader.h
@@ -69,8 +69,7 @@ public:
 						 const QString& name);          ///< fact name
 	
 	/// Returns all parameter names
-	/// FIXME: component id missing
-	QStringList parameterNames(void);
+	QStringList parameterNames(int componentId);
     
     /// Returns the specified Fact.
     /// WARNING: Will assert if parameter does not exists. If that possibily exists, check for existince first with
diff --git a/src/QmlControls/ParameterEditor.qml b/src/QmlControls/ParameterEditor.qml
index a518c37..ab36a5f 100644
--- a/src/QmlControls/ParameterEditor.qml
+++ b/src/QmlControls/ParameterEditor.qml
@@ -39,9 +39,6 @@ import QGroundControl.FactControls 1.0
 QGCView {
     viewPanel: panel
 
-    /// true: show full information, false: for use in smaller widgets
-    property bool fullMode: true
-
     QGCPalette { id: __qgcPal; colorGroupEnabled: true }
     property Fact __editorDialogFact: Fact { }
 
@@ -49,6 +46,9 @@ QGCView {
     readonly property real __rightMargin: 20
     readonly property int __maxParamChars: 16
 
+    property bool _searchFilter: false  ///< true: showing results of search
+    property var _searchResults         ///< List of parameter names from search results
+
     ParameterEditorController {
         id: controller;
         factPanel: panel
@@ -65,6 +65,65 @@ QGCView {
     } // Component - Editor Dialog
 
     Component {
+        id: searchDialogComponent
+
+        QGCViewDialog {
+
+            function accept() {
+                _searchResults = controller.searchParametersForComponent(-1, searchFor.text, searchInName.checked, searchInDescriptions.checked)
+                _searchFilter = true
+                hideDialog()
+            }
+
+            function reject() {
+                _searchFilter = false
+                hideDialog()
+            }
+
+            QGCLabel {
+                id:     searchForLabel
+                text:   "Search for:"
+            }
+
+            QGCTextField {
+                id:                 searchFor
+                anchors.topMargin:  defaultTextHeight / 3
+                anchors.top:        searchForLabel.bottom
+                width:              defaultTextWidth * 20
+            }
+
+            QGCLabel {
+                id:                 searchInLabel
+                anchors.topMargin:  defaultTextHeight
+                anchors.top:        searchFor.bottom
+                text:               "Search in:"
+            }
+
+            QGCCheckBox {
+                id:                 searchInName
+                anchors.topMargin:  defaultTextHeight / 3
+                anchors.top:        searchInLabel.bottom
+                text:               "Name"
+            }
+
+            QGCCheckBox {
+                id:                 searchInDescriptions
+                anchors.topMargin:  defaultTextHeight / 3
+                anchors.top:        searchInName.bottom
+                text:               "Descriptions"
+            }
+
+            QGCLabel {
+                anchors.topMargin:  defaultTextHeight
+                anchors.top:        searchInDescriptions.bottom
+                width:              parent.width
+                wrapMode:           Text.WordWrap
+                text:               "Hint: Leave 'Search For' blank and click Apply to list all parameters sorted by name."
+            }
+        }
+    }
+
+    Component {
         id: factRowsComponent
 
         Column {
@@ -84,7 +143,7 @@ QGCView {
             }
 
             Repeater {
-                model: controller.getFactsForGroup(componentId, group)
+                model: parameterNames
 
                 Column {
                     property Fact modelFact: controller.getParameterFact(componentId, modelData)
@@ -116,7 +175,6 @@ QGCView {
                             height:             parent.height
                             anchors.left:       valueLabel.right
                             verticalAlignment:	Text.AlignVCenter
-                            visible:            fullMode
                             text:               modelFact.shortDescription
                         }
 
@@ -126,7 +184,7 @@ QGCView {
 
                             onClicked: {
                                 __editorDialogFact = modelFact
-                                showDialog(editorDialogComponent, "Parameter Editor", fullMode ? 50 : -1, StandardButton.Cancel | StandardButton.Save)
+                                showDialog(editorDialogComponent, "Parameter Editor", 50, StandardButton.Cancel | StandardButton.Save)
                             }
                         }
                     }
@@ -142,6 +200,106 @@ QGCView {
         } // Column - Facts
     } // Component - factRowsComponent
 
+    Component {
+        id: groupedViewComponent
+
+        Item {
+            ScrollView {
+                id :	groupScroll
+                width:	defaultTextWidth * 25
+                height: parent.height
+
+                Column {
+                    Repeater {
+                        model: controller.componentIds
+
+                        Column {
+                            id: componentColumn
+
+                            readonly property int componentId: parseInt(modelData)
+
+                            QGCLabel {
+                                height:				contentHeight + (ScreenTools.defaultFontPixelHeight * 0.5)
+                                text:               "Component #: " + componentId.toString()
+                                verticalAlignment:	Text.AlignVCenter
+                                font.pixelSize:     ScreenTools.mediumFontPixelSize
+                            }
+
+                            Repeater {
+                                model: controller.getGroupsForComponent(componentColumn.componentId)
+
+                                Column {
+                                    QGCButton {
+                                        x:		__leftMargin
+                                        width: groupScroll.width - __leftMargin - __rightMargin
+                                        text:	modelData
+
+                                        onClicked: {
+                                            factRowsLoader.sourceComponent = null
+                                            factRowsLoader.componentId = componentId
+                                            factRowsLoader.group = modelData
+                                            factRowsLoader.sourceComponent = factRowsComponent
+                                        }
+                                    }
+
+                                    Item {
+                                        width:  1
+                                        height: ScreenTools.defaultFontPixelSize * 0.25
+                                    }
+                                } // Column - Group
+                            } // Repeater - Groups
+
+                            Item {
+                                height: 10
+                                width:	10
+                            }
+                        } // Column - Component
+                    } // Repeater - Components
+                } // Column - Component
+            } // ScrollView - Groups
+
+            ScrollView {
+                id:             factScrollView
+                anchors.left:   groupScroll.right
+                anchors.right:  parent.right
+                height:         parent.height
+
+                Loader {
+                    id:                 factRowsLoader
+                    width:              factScrollView.width
+                    sourceComponent:    factRowsComponent
+
+                    property int componentId:       controller.componentIds[0]
+                    property string group:          controller.getGroupsForComponent(controller.componentIds[0])[0]
+                    property var parameterNames:    controller.getParametersForGroup(componentId, group)
+                }
+            } // ScrollView - Facts
+        } // Item
+    } // Component - groupedViewComponent
+
+    Component {
+        id: searchResultsViewComponent
+
+        Item {
+            ScrollView {
+                id:             factScrollView
+                anchors.left:   parent.left
+                anchors.right:  parent.right
+                height:         parent.height
+
+                Loader {
+                    id:                 factRowsLoader
+                    width:              factScrollView.width
+                    sourceComponent:    factRowsComponent
+
+                    property int componentId:       -1
+                    property string group:          "Search results"
+                    property var parameterNames:    _searchResults
+                }
+            } // ScrollView - Facts
+        } // Item
+    } // Component - sortedViewComponent
+
     QGCViewPanel {
         id:             panel
         anchors.fill:   parent
@@ -155,8 +313,8 @@ QGCView {
                 height: toolsButton.height
 
                 QGCLabel {
+                    id:             titleText
                     font.pixelSize: ScreenTools.largeFontPixelSize
-                    visible:        fullMode
                     text:           "PARAMETER EDITOR"
                 }
 
@@ -174,15 +332,17 @@ QGCView {
                             text:           "Reset all to defaults"
                             onTriggered:	controller.resetAllToDefaults()
                         }
+                        MenuItem {
+                            text:           "Search..."
+                            onTriggered:    showDialog(searchDialogComponent, "Parameter Search", 50, StandardButton.Reset | StandardButton.Apply)
+                        }
                         MenuSeparator { }
                         MenuItem {
-                            text:           "Load from file"
-                            visible:        fullMode
+                            text:           "Load from file..."
                             onTriggered:	controller.loadFromFile()
                         }
                         MenuItem {
-                            text:           "Save to file"
-                            visible:        fullMode
+                            text:           "Save to file..."
                             onTriggered:	controller.saveToFile()
                         }
                         MenuSeparator { }
@@ -200,80 +360,11 @@ QGCView {
                 width:	5
             }
 
-            Item {
-                width:  parent.width
-                height: parent.height - (lastSpacer.y + lastSpacer.height)
-
-                ScrollView {
-                    id :	groupScroll
-                    width:	defaultTextWidth * 25
-                    height: parent.height
-
-                    Column {
-                        Repeater {
-                            model: controller.componentIds
-
-                            Column {
-                                id: componentColumn
-
-                                readonly property int componentId: parseInt(modelData)
-
-                                QGCLabel {
-                                    height:				contentHeight + (ScreenTools.defaultFontPixelHeight * 0.5)
-                                    text:               "Component #: " + componentId.toString()
-                                    verticalAlignment:	Text.AlignVCenter
-                                    font.pixelSize:     ScreenTools.mediumFontPixelSize
-                                }
-
-                                Repeater {
-                                    model: controller.getGroupsForComponent(componentColumn.componentId)
-
-                                    Column {
-                                        QGCButton {
-                                            x:		__leftMargin
-                                            width: groupScroll.width - __leftMargin - __rightMargin
-                                            text:	modelData
-
-                                            onClicked: {
-                                                factRowsLoader.sourceComponent = null
-                                                factRowsLoader.componentId = componentId
-                                                factRowsLoader.group = modelData
-                                                factRowsLoader.sourceComponent = factRowsComponent
-                                            }
-                                        }
-
-                                        Item {
-                                            width:  1
-                                            height: ScreenTools.defaultFontPixelSize * 0.25
-                                        }
-                                    } // Column - Group
-                                } // Repeater - Groups
-
-                                Item {
-                                    height: 10
-                                    width:	10
-                                }
-                            } // Column - Component
-                        } // Repeater - Components
-                    } // Column - Component
-                } // ScrollView - Groups
-
-                ScrollView {
-                    id:             factScrollView
-                    anchors.left:   groupScroll.right
-                    anchors.right:  parent.right
-                    height:         parent.height
-
-                    Loader {
-                        id:     factRowsLoader
-                        width:  factScrollView.width
-
-                        property int componentId:   controller.componentIds[0]
-                        property string group:      controller.getGroupsForComponent(controller.componentIds[0])[0]
-                        sourceComponent:            factRowsComponent
-                    }
-                } // ScrollView - Facts
-            } // Item - Group ScrollView + Facts
+            Loader {
+                width:              parent.width
+                height:             parent.height - (lastSpacer.y + lastSpacer.height)
+                sourceComponent:    _searchFilter ? searchResultsViewComponent: groupedViewComponent
+            }
         } // Column - Outer
     } // QGCViewPanel
 } // QGCView
diff --git a/src/QmlControls/ParameterEditorController.cc b/src/QmlControls/ParameterEditorController.cc
index 9762a21..bf6eb48 100644
--- a/src/QmlControls/ParameterEditorController.cc
+++ b/src/QmlControls/ParameterEditorController.cc
@@ -53,13 +53,35 @@ QStringList ParameterEditorController::getGroupsForComponent(int componentId)
 	return groupMap[componentId].keys();
 }
 
-QStringList ParameterEditorController::getFactsForGroup(int componentId, QString group)
+QStringList ParameterEditorController::getParametersForGroup(int componentId, QString group)
 {
 	const QMap<int, QMap<QString, QStringList> >& groupMap = _autopilot->getGroupMap();
 	
 	return groupMap[componentId][group];
 }
 
+QStringList ParameterEditorController::searchParametersForComponent(int componentId, const QString& searchText, bool searchInName, bool searchInDescriptions)
+{
+    QStringList list;
+    
+    foreach(QString paramName, _autopilot->parameterNames(componentId)) {
+        if (searchText.isEmpty()) {
+            list += paramName;
+        } else {
+            Fact* fact = _autopilot->getParameterFact(componentId, paramName);
+            
+            if (searchInName && fact->name().contains(searchText, Qt::CaseInsensitive)) {
+                list += paramName;
+            } else if (searchInDescriptions && (fact->shortDescription().contains(searchText, Qt::CaseInsensitive) || fact->longDescription().contains(searchText, Qt::CaseInsensitive))) {
+                list += paramName;
+            }
+        }
+    }
+    list.sort();
+    
+    return list;
+}
+
 void ParameterEditorController::clearRCToParam(void)
 {
 	Q_ASSERT(_uas);
diff --git a/src/QmlControls/ParameterEditorController.h b/src/QmlControls/ParameterEditorController.h
index b0ecde6..a1db222 100644
--- a/src/QmlControls/ParameterEditorController.h
+++ b/src/QmlControls/ParameterEditorController.h
@@ -45,7 +45,8 @@ public:
     Q_PROPERTY(QStringList componentIds MEMBER _componentIds CONSTANT)
 	
 	Q_INVOKABLE QStringList getGroupsForComponent(int componentId);
-	Q_INVOKABLE QStringList getFactsForGroup(int componentId, QString group);
+	Q_INVOKABLE QStringList getParametersForGroup(int componentId, QString group);
+    Q_INVOKABLE QStringList searchParametersForComponent(int componentId, const QString& searchText, bool searchInName, bool searchInDescriptions);
 	
 	Q_INVOKABLE void clearRCToParam(void);
 	Q_INVOKABLE void saveToFile(void);
diff --git a/src/QmlControls/QGCView.qml b/src/QmlControls/QGCView.qml
index c0ded49..d2e71ac 100644
--- a/src/QmlControls/QGCView.qml
+++ b/src/QmlControls/QGCView.qml
@@ -106,6 +106,9 @@ FactPanel {
         } else if (buttons & StandardButton.Abort) {
             __rejectButton.text = "Abort"
             __rejectButton.visible = true
+        } else if (buttons & StandardButton.Reset) {
+            __rejectButton.text = "Reset"
+            __rejectButton.visible = true
         }
     }